elomaster Posté 18 Juillet 2005 Posté 18 Juillet 2005 Bonjour a tous Les articles de mon site son stocké dans une table mysql. Jai créer un champ mot clé dans lequel pour chaque article le redacteur entre les mot clé correspondant a son article. Je voudrais réaliser un moteur de recherche a partir de ce champ. mon principale problème est la recherche dans la table mysql. Jai deja fait des essai du genre : $query= "select * from article where mot-clé= "mot_clé_entrer_par_le_visiteur" " Le probléme est que dans le champ mot clé il y plusieurs mot clé et que du coup la demande naboutit jamais. Pouvez vous maider
hcplayer Posté 18 Juillet 2005 Posté 18 Juillet 2005 (modifié) bonjour, WHERE mot-clé LIKE '%mot_clé_entrer_par_le_visiteur%' je pense que ce sera deja mieux, ensuite, il te faut également exploser les mots? et tester pour chacun des mots entrés dans le formulaire Modifié 18 Juillet 2005 par hcplayer
Black_Shade Posté 18 Juillet 2005 Posté 18 Juillet 2005 Bonjour, Tu peux faire SELECT * FROM `article` WHERE `mot-cle` LIKE '%$word%' Par exemple, ou il y a une autre fonction que "LIKE" mais je ne sais pas te dire laquelle (elle "triait" par pertinence)
elomaster Posté 18 Juillet 2005 Auteur Posté 18 Juillet 2005 Ok je vais essayer Mon autre probleme est que je voudrais que le visteur puisse entrer plusieurs mot clé qui seront verifier chacun à leur tour
elomaster Posté 18 Juillet 2005 Auteur Posté 18 Juillet 2005 (modifié) Voila le code que j'ai fait pour le moment mais les boucles for me semble mauvaise et il doit exister un meilleur moyen mais je vois pas lequel. if(isset($_GET['q'])){$qs=explode(" ",$_GET['q']);$nbq=count($qs);echo $nbq;for($i=0;$i<$nbq;$i++){$query[$i]='select * from article where motcle like "%'.$qs[$i].'%"';echo $query[$i];mysql_connect("localhost","login","mot de passe")$retour[$i]=mysql_query($query[$i]);mysql_error();mysql_close();$nb[$i]=mysql_num_rows($retour[$i]);while($row=mysql_fetch_array($retour[$i])){$id[][$i]=$row["id"];$auteur[]=$row["auteur"];$lien[]=$row["lien"];$jour[]=$row["jour"];$mois[]=$row["mois"];$heure[]=$row["heure"];$annee[]=$row["annee"];$description[]=$row["description"];$vues[]=$row["vues"];}for($t=0;$t<$nb[$i];$t++){echo '<p><a class="haut" href="lire.php?id='.$id[$i].'">'.$lien[$i].'</a><br>';echo ''.$description[$i].'...<br>';echo '<b>'.$auteur[$i].'</b> le : ';echo''.$jour[$i].'/'.$mois[$t].'/'.$annee[$i].' à '.$heure[$i].'<br>article vus : '.$vues[$i].' fois</p>';}}}else{echo '<form action="search.php" method="get"><input type="text" name="q"><input type="submit"></form>';} ps:le code fonctionne mais pour de mots clés different mais correspondant aux même article il affiche 2 fois la reponse, n'y a t'il pas un moyen de l'éviter Modifié 18 Juillet 2005 par elomaster
nalrem Posté 18 Juillet 2005 Posté 18 Juillet 2005 L'autre fonction qu'évoque black_shade est l'utilisation de la recherche full text avec mysql. cf. http://doc.domainepublic.net/mysql/doc.mys...ext-search.html Il existe aussi un certain nombre de tutoriel de moteur de recherche utilisant cette fameuse recherche de tri par pertinence. Je l'utilise sur quelques sites, mais parfois la pertinence n'est pas complètement au rendez-vous...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant