feuch Posté 6 Mars 2007 Posté 6 Mars 2007 Bonjour, je travail actuellement sur un petit moteur de recherche interne, au depart je cherchais juste les titre de mes articles, mais j'ai besoin de resultat plus precis alors j'ai rajouté un champ mot-clef dans ma base. ex d'entrée: titre : bob morane --------- clef: bob morane vernes. quand je lance la recherche j'ai bon quand je mets "bob", ou quand je mets "morane" ou "vernes". mais si je mets "bob morane" j'ai rien. je sais que je suis pas loin . mais je suis pas vraiment devellopeur, en fait.
beal2912 Posté 6 Mars 2007 Posté 6 Mars 2007 (modifié) Bonjour il y a plusieurs manières de procéder en voici une : 1 - Tu decoupes ta recherche et tu mets les différents mots dans un tableau : // $recherche contient la variable $_POST ou $_GET de ton formulaire$mots = explode(" ",$recherche);//pour la recherche "bob morane" tu obtiens :// $mots[0] = bob// $mots[1] = morane 2 - Tu comptes le nombre de mots dans ta recherche et tu construis la requete MySQL : // calcule du nombre de mots$nombre_mots = count($mots);if ($nombre_mots > 1 ){ // si le nombre de mots est superieur a 1 for($i=0; $i<=$nombre_mots-1; $i++){ if($i == 0){ // nom est le nom de ma colonne MySQL (titre ou mots clé pour toi) $req = " nom LIKE '%".$mots[$i]."%' "; } else{ // ici tu peux changer le "AND" par un "OR" si tu souhaites obtenir "un mot et un autre" ou "un mot ou un autre" $req = $req." AND nom LIKE '%".$mots[$i]."%' "; } }}else{ $req = " nom LIKE '%".$recherche."%' ";} 3 - tu exécutes la requête MySQL : $query = "SELECT * FROM ma_classe WHERE ".$req;$result = mysql_query($query); Pour rechercher dans plusieurs champs tu peux repéter l'étapes 2 puis : $query = "SELECT * FROM ma_classe WHERE ".$req." OR ".$req2."OR ".$req3."";$result = mysql_query($query); Voilà si tu as des questions ... hésites pas Modifié 6 Mars 2007 par beal2912
feuch Posté 6 Mars 2007 Auteur Posté 6 Mars 2007 ça marche nickel. merci beaucoup beal je vais pouvoir m'attaquer a la partie admin pour coller le mots-clef youuhouu
maximettb Posté 6 Mars 2007 Posté 6 Mars 2007 À mon avis, si ton site vient à contenir plus d'articles, il vaut mieux utiliser un index de type FULLTEXT, combiné à l'opérateur MATCH, bien plus efficace à mon avis.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant