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);
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, ....
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);
}
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é !
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 ;)
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 ;)
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."%'')";
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 ??
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
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é !!