Aller au contenu

Moteur de recherche


Messages recommandés

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... :francais:

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 :transpi:

De quoi cela pourrait il venir (code sur demande :ouioui: )

Merci :francais:

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

bon, voila, apres "un peu" de temps :iloveyou: 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... :top:

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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 ...

Lien vers le commentaire
Partager sur d’autres sites

$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."%' ...

Lien vers le commentaire
Partager sur d’autres sites

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.)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...