paikan_hck Posted May 5, 2005 Share Posted May 5, 2005 Bonjour a tous. Voila sur un de mes sites, j'ai un moteur de recherche sur une base MySQL, mais il delire, et n'affiche pas tous les resultats qu'il devrait... Voici la 1ere version du moteur : http://www.echos.pl/form/page_recherche.php dans un deuxieme temps, tout sera sur une seule recherche generale, mais d'abord je voudrais qu'il fonctionne parfaitement. Par exemple, dans les "sommaires" faire une recherche du mot "numero" Il devrait sortir 49 resultat (car 49 sommaires).. et il en trouve 1 seul De quoi cela pourrait il venir (code sur demande ) Merci Link to comment Share on other sites More sharing options...
Nis Posted May 5, 2005 Share Posted May 5, 2005 Il faudrait qu'on aie le code oui Link to comment Share on other sites More sharing options...
paikan_hck Posted May 5, 2005 Author Share Posted May 5, 2005 ok, je le mets dans peu de temps Link to comment Share on other sites More sharing options...
paikan_hck Posted May 17, 2005 Author Share Posted May 17, 2005 bon, voila, apres "un peu" de temps pour cause de vacances: page de recherche <form action="http://www.echos.pl/form/page_resultats_so.php" method="post" name="recherche" id="recherche"> <table width="400" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td colspan="2"><div align="center"><font size="2">Rechercher dans les brèves <strong>société</strong></font></div></td> </tr> <tr> <td width="60%"> <div align="center"><font size="2">Entrer un seul mot à rechercher</font> </div></td> <td width="50%"><div align="center"> <input name="mot_so" type="text" id="mot" maxlength="50"> </div></td> </tr> <tr> <td> </td> <td><div align="center"> <input name="envoyer" type="submit" id="envoyer" value="Envoyer"> </div></td> </tr> </table> </form> la page de resultat: //on selectionne les news ou le mot est présent $req = mysql_query("SELECT * from societe where titre or description LIKE '%".$mot_so."%' Order by nro DESC"); //on compte le nombre de réponse $res= mysql_numrows($req); //on affiche le nombre de réponse print 'Pour le mot "'.$mot_so.'" il y a '.$res.' résultats <br>'; while ($ligne = mysql_fetch_array($req)) { echo "<tr> "; echo "<td width='70%' size='2' class='text'><a href='http://www.echos.pl/form/societeb.php?societe=".$ligne["nro"]."'><font size='2' face='Verdana, Arial, Helvetica, sans-serif'><b>- ".$ligne["titre"]."</b></font></a></td>"; echo "</tr>"; Voila. Donc en fait ca fonctionne mais pas tout a fait normalement... Link to comment Share on other sites More sharing options...
paikan_hck Posted May 25, 2005 Author Share Posted May 25, 2005 personne? :( Link to comment Share on other sites More sharing options...
Magnus63 Posted May 25, 2005 Share Posted May 25, 2005 J'y connait pas grand chose mais si titre et description possedent le meme contenu, la requete ne vas pas les selectionner car je crois que le "or" est exclusif : t : toto d: toto (ligne 1) t : toto d: tata (ligne 2) si tu recherche toto il ne vas te rendre que la ligne 2 car la ligne 1 possede toto dans les 2 champs. Fait une recherche que dans 1 champs et sa devrai mieux aller... Link to comment Share on other sites More sharing options...
paikan_hck Posted May 31, 2005 Author Share Posted May 31, 2005 ok, merci. je vais essayer ca :edit: non en fait j'ai besoin des 2... ca rpour cercher une actualité sans le titre ou la description, c'est un peu bete... Link to comment Share on other sites More sharing options...
Nis Posted May 31, 2005 Share Posted May 31, 2005 Peut-être une piste, mais je n'en suis pas très sur, je ne fais que débuter en SQL : $req = mysql_query("SELECT * from societe where titre or description LIKE '%".$mot_so."%' Order by nro DESC"); Est-ce qu'il ne prendrait pas le LIKE blablabla uniquement pour la description ? Ne faudrait-il pas mettre de parenthèses style : ... where (titre or description) LIKE ... Link to comment Share on other sites More sharing options...
paikan_hck Posted May 31, 2005 Author Share Posted May 31, 2005 ca peut etre une piste oui, je vais essayer ca :edit: non ca passe pas Link to comment Share on other sites More sharing options...
astero-H Posted May 31, 2005 Share Posted May 31, 2005 $req = mysql_query("SELECT * from societe where titre or description LIKE '%".$mot_so."%' Order by nro DESC"); bon ça fait longtemps que j'ai pas vu de sql mais je pense que le pb vient de la syntaxe du "or", essaies plutot un truc du genre : ... WHERE titre LIKE '%".$mot_so."%' OR description LIKE '%".$mot_so."%' ... Link to comment Share on other sites More sharing options...
paikan_hck Posted May 31, 2005 Author Share Posted May 31, 2005 ok, vais essayer ca IMPEC !! ca marche parfaitement Merci and be INpact Link to comment Share on other sites More sharing options...
Nis Posted May 31, 2005 Share Posted May 31, 2005 Arf, zut. J'y avais pensé mais je me suis dis que ça donnerait le même résultat en mettant titre et description entre parenthèses Il n'y aurait pas moyen de n'écrire qu'une seule fois le Like pour les deux "champs" (titre et descr.) Link to comment Share on other sites More sharing options...
paikan_hck Posted May 31, 2005 Author Share Posted May 31, 2005 bah le coup de la parenthese semblait bon (comme en maths pour la "prorité") mais ca passe pas... Link to comment Share on other sites More sharing options...
njoyard Posted May 31, 2005 Share Posted May 31, 2005 je pense qu'en SQL l'expression "champ1 OR champ2" signifie "champ1 != NULL OR champ2 != NULL" donc en faisant (champ1 OR champ2) LIKE %mot% ça ne marchera pas (comparaison d'un bool avec un LIKE -> toujours faux ?) mais je peux me tromper... cela dit je ne pense pas qu'il existe de raccourci pour demander qu'un certain nombre de champs satisfassent à la même condition. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.