Version complète: sur le forum Webmaster Hub : Probleme dans un moteur de recherche
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
elomaster
Bonjour a tous
Les articles de mon site son stocké dans une table mysql. J’ai 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. J’ai deja fait des essai du genre :
CODE
$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 n’aboutit jamais.

Pouvez vous m’aider
hcplayer
bonjour,

CODE
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 smile.gif
Black_Shade
Bonjour,

Tu peux faire
SQL
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
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
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.
CODE
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
nalrem
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...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.