[PHP/SQL] Problem Moteur de Recherche
Résolu
Digit@lChord
Messages postés
129
Date d'inscription
Statut
Membre
Dernière intervention
-
Digit@lChord Messages postés 129 Date d'inscription Statut Membre Dernière intervention -
Digit@lChord Messages postés 129 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche a faire un moteur de recherche qui affiche tout les résultat dans un tableau.
Donc apres avoir vu la mise en page et les differente caracteristiques de ce tableau sa ma donné sa :
Sa fonctione, le ou les résultats s'affiche avec la mise en page demandé MAIS le probleme c'est qu'il m'affiche 35 lignes (la totalitée des lignes des 2 tables JR_main et JR_devices) avec les même valeurs dans chaque lignes (valeur de la ligne que je recherche).
Alors que normalement il est censé m'afficher seulement le nombre de lignes comportant mon mot clé !!
Je pense que le probleme ce situe au niveau de la ligne "
Voila voila, j'espere que quelqu'un saura m'aider la dessus, si vous voyez quelque chose qui va pas sur ce code dites le moi parceque moi je ne vois strictement aucuns problemes.
Merci d'avance..
Je cherche a faire un moteur de recherche qui affiche tout les résultat dans un tableau.
Donc apres avoir vu la mise en page et les differente caracteristiques de ce tableau sa ma donné sa :
$keyword = $_GET['search']; $query = mysql_query("SELECT JR_main.ID,JR_main.IOS,JR_main.TYPE,JR_main.STATUS,JR_devices.IPH,JR_devices.IPH3G,JR_devices.IPH3GS,JR_devices.IPH4G,JR_devices.IPH4GS,JR_devices.IPOD1G,JR_devices.IPOD2G,JR_devices.IPOD3G,JR_devices.IPOD4G,JR_devices.IPAD1G,JR_devices.IPAD2G FROM JR_main,JR_devices WHERE JR_main.ID = JR_devices.ID AND type LIKE '%$keyword%' OR status LIKE '%$keyword%' OR ios LIKE '%$keyword%' ORDER BY id DESC") or die (mysql_error()); $nb_resultats = mysql_num_rows($query); while($data = mysql_fetch_array($query)) { echo '<tr class="'; echo ($c<0) ? 0 : ($c++ % 2 == 1) ? odd : even; if($data['STATUS'] == "Coming Soon") { echo'soon">'; } else { echo'" onclick="DoNav(\'device.php?id='.$data['ID'].'\');">';}; echo '<td class="osimg">'; echo '<img src="img/iOS.png" class="icon"></td>'; echo '<td class="ios"><b>'.$data['IOS'].'</b></td>'; echo '<td class="compatibility"><div class="info">'; echo '<img src="img/dyna_2/iph1g'.$data['IPH'].'.png"><img src="img/dyna_2/iph3g'.$data['IPH3G'].'.png"><img src="img/dyna_2/iph3gs'.$data['IPH3GS'].'.png"><img src="img/dyna_2/iph4g'.$data['IPH4G'].'.png"><img src="img/dyna_2/iph4gs'.$data['IPH4GS'].'.png"><img src="img/dyna_2/ipod1g'.$data['IPOD1G'].'.png"><img src="img/dyna_2/ipod2g'.$data['IPOD2G'].'.png"><img src="img/dyna_2/ipod3g'.$data['IPOD3G'].'.png"><img src="img/dyna_2/ipod4g'.$data['IPOD4G'].'.png"><img src="img/dyna_2/ipad1g'.$data['IPAD1G'].'.png"><img src="img/dyna_2/ipad2g'.$data['IPAD2G'].'.png">'; echo '</div></td>'; echo '<td class="type"><b><font color="'; if($data['TYPE'] == "Warning") { echo'#ff0000'; } else { }; echo '">'.$data['TYPE'].'</font></b></td>'; echo '<td class="status"><b><div class="'.$data['STATUS'].'">'.$data['STATUS'].'</div></b></td></tr>'; } mysql_free_result ($query);
Sa fonctione, le ou les résultats s'affiche avec la mise en page demandé MAIS le probleme c'est qu'il m'affiche 35 lignes (la totalitée des lignes des 2 tables JR_main et JR_devices) avec les même valeurs dans chaque lignes (valeur de la ligne que je recherche).
Alors que normalement il est censé m'afficher seulement le nombre de lignes comportant mon mot clé !!
Je pense que le probleme ce situe au niveau de la ligne "
WHERE JR_main.ID = JR_devices.ID AND type LIKE '%$keyword%' OR status LIKE '%$keyword%' OR ios LIKE '%$keyword%' ORDER BY id DESC")" mais je sais pas du tout le reformuler autrement.
Voila voila, j'espere que quelqu'un saura m'aider la dessus, si vous voyez quelque chose qui va pas sur ce code dites le moi parceque moi je ne vois strictement aucuns problemes.
Merci d'avance..
A voir également:
- [PHP/SQL] Problem Moteur de Recherche
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Google moteur de recherche page d'accueil - Guide
- Copernic moteur de recherche - Télécharger - Utilitaires
- Pourquoi mon moteur de recherche change tout seul ✓ - Forum Virus
- Rechercher ou entrer l'adresse 4 - recherche google ✓ - Forum Réseaux sociaux
2 réponses
il faut faire un jointure
à la place de :
tu mets :
à la place de :
FROM JR_main,JR_devices WHERE JR_main.ID = JR_devices.ID
tu mets :
FROM JR_main INNER JOIN JR_devices ON JR_main.ID = JR_devices.ID
Merci, Sa ma l'air bon sauf que j'ai sa :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM JR_main INNER JOIN JR_devices ON JR_main.ID = JR_devices.ID WHERE JR_main.t' at line 1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM JR_main INNER JOIN JR_devices ON JR_main.ID = JR_devices.ID WHERE JR_main.t' at line 1
$query = mysql_query("SELECT JR_main.ID,JR_main.IOS,JR_main.TYPE,JR_main.STATUS,JR_devices.IPH,JR_devices.IPH3G,JR_devices.IPH3GS,JR_devices.IPH4G,JR_devices.IPH4GS,JR_devices.IPOD1G,JR_devices.IPOD2G,JR_devices.IPOD3G,JR_devices.IPOD4G,JR_devices.IPAD1G,JR_devices.IPAD2G FROM JR_main,JR_devices FROM JR_main INNER JOIN JR_devices ON JR_main.ID = JR_devices.ID WHERE JR_main.type LIKE '%$keyword%' OR JR_main.status LIKE '%$keyword%' OR JR_main.ios LIKE '%$keyword%' ORDER BY id DESC") or die (mysql_error());
le problème est
premièrement, type est un mot reservé de sql, pour éviter des soucies je te conseille de mettre des quotes autour (les quotes en sql, c'est alt Gr + 7)
ensuite, à un endroit type est en majuscule et par la suite , il est en miniscule
idem pour ios, id , status et peut être d'autre, fais attention de respecter la casse
autre chose, tu fais un order by id, mais tu as plusieurs id dans tes tables, tu auras un message d'erreur car il ne saura pas de quel id tu parles
JR_main.TYPE
premièrement, type est un mot reservé de sql, pour éviter des soucies je te conseille de mettre des quotes autour (les quotes en sql, c'est alt Gr + 7)
ensuite, à un endroit type est en majuscule et par la suite , il est en miniscule
idem pour ios, id , status et peut être d'autre, fais attention de respecter la casse
autre chose, tu fais un order by id, mais tu as plusieurs id dans tes tables, tu auras un message d'erreur car il ne saura pas de quel id tu parles
Merci de ton aide je vais regarder tout sa :) (j'ai mis des quotes SQL, même erreur :s)
Ah et au depart j'avais fait la requete sans la recherche et sa fonctionnais tres bien :
Et dans cette requete le ORDER BY id DESC fonctionne.
Bref au cas ou j'ai trouvé une autre technique moins propre mais qui fonctionne :P
Ah et au depart j'avais fait la requete sans la recherche et sa fonctionnais tres bien :
$sql = 'SELECT JR_main.ID,JR_main.IOS,JR_main.TYPE,JR_main.STATUS,JR_devices.IPH,JR_devices.IPH3G,JR_devices.IPH3GS,JR_devices.IPH4G,JR_devices.IPH4GS,JR_devices.IPOD1G,JR_devices.IPOD2G,JR_devices.IPOD3G,JR_devices.IPOD4G,JR_devices.IPAD1G,JR_devices.IPAD2G FROM JR_main,JR_devices WHERE JR_main.ID = JR_devices.ID ORDER BY id DESC';
Et dans cette requete le ORDER BY id DESC fonctionne.
Bref au cas ou j'ai trouvé une autre technique moins propre mais qui fonctionne :P