DVTAZ
Messages postés38Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention10 juillet 2011
-
2 janv. 2007 à 20:50
DVTAZ
Messages postés38Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention10 juillet 2011
-
3 janv. 2007 à 21:37
Bonjour à toutes et à tous
Voila, ne serait il pas possible de simplifier ce genre de code,(voir ci-dessous)
je fait une requete avec un critere identique mais sur des champs différents, et je passe par une case Texte!
merci d'avance pour vorte aide
<hr />
<!---- ======================================-->
$query = "SELECT * FROM equipe WHERE joueur1 like '%".$searchterm."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo " ".$num_results." Match trouvé pour ".$searchterm." ";
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
affichage des données 1
<!---- ======================================-->
$query = "SELECT * FROM equipe WHERE joueur2 like '%".$searchterm."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo " ".$num_results." Match trouvé pour ".$searchterm." ";
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
affichage des données 2
<!---- ======================================-->
$query = "SELECT * FROM equipe WHERE joueur2 like '%".$searchterm."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo " ".$num_results." Match trouvé pour ".$searchterm." ";
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 3 janv. 2007 à 00:03
Salut,
tout dépend quelle est ta version de MySQL. Essaie ça :
$query = '(SELECT * FROM equipe WHERE joueur1 like "%'.$searchterm.'%") UNION (SELECT * FROM equipe WHERE joueur2 like "%'.$searchterm.'%") UNION (SELECT * FROM equipe WHERE joueur1 like "%'.$searchterm.'%"')';
Et par contre évite les SELECT *, mets des SELECT champ1, champ2, ....
Flachy Joe
Messages postés2103Date d'inscriptionjeudi 16 septembre 2004StatutMembreDernière intervention21 novembre 20231 3 janv. 2007 à 10:41
Ou simplement une fonction :
function select_joueur($champ){
$query = "SELECT * FROM equipe WHERE".$joueur." like '%".$searchterm."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo " ".$num_results." Match trouvé pour ".$searchterm." ";
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
}
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 3 janv. 2007 à 15:08
L'Union aussi fait 3 requètes Antho :)
J'aurais fais ca moi :
public function Select($player) {
$db->query(' SELECT xx,yy,zz FROM equipe WHERE joueur LIKE "%'.$player.'%" ');
if ( $db->num_rows() === 0 )
throw new Exception('Aucun match trouvé pour ce joueur.');
else while ( $data $db->fetch_object() ) $array[] $data;
return $array;
}
$match = new match(); // Nom de la classe... jla nomme comme ca arbitrairement hein ^^
try {
$tabmatch = $match->Select('nomdujoueur');
if ( count($tabmatch) === 1 ) {
echo '1 match a été trouvé !
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 3 janv. 2007 à 19:06
FHx > Tu fais une seule requête, qui elle-même en fait trois en interne, mais ça reste une seule requête vue de l'extérieur, c'est donc plus optimisé. Sinon idem, une fonction, tu l'appelles trois fois ... bof bof quoi.
Enfin bon chacun sa méthode, moi je propose une solution, libre à DVTAZ de l'accepter ou d'en choisir une autre ;)
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 3 janv. 2007 à 19:07
FHx > Tu fais une seule requête, qui elle-même en fait trois en interne, mais ça reste une seule requête vue de l'extérieur, c'est donc plus optimisé. Sinon idem, une fonction, tu l'appelles trois fois ... bof bof quoi.
Enfin bon chacun sa méthode, moi je propose une solution, libre à DVTAZ de l'accepter ou d'en choisir une autre ;)
DVTAZ
Messages postés38Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention10 juillet 2011 3 janv. 2007 à 19:19
Pour Anthomicro:
Je viens d'esayer ta proposition mais j'obtiens un message d'erreur du genre:
"Warning: mysql_num_rows(): supplied argument is not a valid Mysql result resource in/mnt/139/sdc/2/0/nom du site/repertoire/page.php on line 37 "
en ligne 36 et 37 j'ai le code suivant :
$result = mysql_query($squery);
$num_results = mysql_num_rows(result);
auparavent j'ai modifié ma requete comme ci-dessous:
$query = "(SELECT joueur1 FROM equipe WHERE joueur1 like '%".$searchterm."%') UNION (SELECT joueur2 FROM equipe WHERE joueur2 like '%".$searchterm."%') UNION (SELECT joueur3 FROM equipe WHERE joueur3 like '%".$searchterm."%'')";
DVTAZ
Messages postés38Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention10 juillet 2011 3 janv. 2007 à 19:41
voilà c'est fait, alors :
la requete fonctionne sans erreur mais n'affiche le resultat que sur le 1er champs, c est a dire "joueur1" et ne donne aucun résultat sur les autres requetes, et j'ai verifié dans les autres champs de la base, j'ai bien un résultat à afficher ??
DVTAZ
Messages postés38Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention10 juillet 2011 3 janv. 2007 à 20:45
oui oui ca j avais vue et rectifié, voir la requete 6 message aus dessus lol
par contre j' ai essayé avec la methode " OR", j'obtiens une réponse mais l'affichage ne convient pas, du fait que je dois afficher tout les champs suceptibles de contenir ma requete, ?? dileme
DVTAZ
Messages postés38Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention10 juillet 2011 3 janv. 2007 à 21:37
voila j ai rectifié la requete fallait enlever les () , mais ca ne donne pas ce que ca devrait, un seul enregistrement apparait.
voila la requete modifié :
$query = "SELECT joueur1 FROM equipe WHERE joueur1 like '%".$searchterm."%' UNION SELECT joueur2 FROM equipe WHERE joueur2 like '%".$searchterm."%' UNION SELECT joueur3 FROM equipe WHERE joueur3 like '%".$searchterm."%'";
merci pour l'aide apporté !!