je m'en sors plus :cry:
je cherche une methode pour integrer a mon moteur de recherche la possibilité de taper plusieurs mots clef...
en fait pour le moment j'ai une table avec un champ mots clef, que je remplis avec les differents mots clef auxquel se referer.
si je tape "mots clef1" "mots clef2" et que cela a été tapé dans cet ordre dans ma table, tout va bien, des que j'inverse ca marche plus....
j'ai compris le principe, il faut exploser la chaine du champ de recherche, placer les resultat dans un tableau, compter le nombre de resultat dans ce tableau pour ensuite creer une boucle qui evaluera ma requete autant de fois que ce qu'il y a de mot, en appliquant la methode OR...
ca donne a peu pres ca
| CODE |
| <?php // On se connecte au serveur SQL mysql_connect("localhost","root","pass"); // On selectionne la base de données (n'oubliez pas de la creer) mysql_select_db("mtr"); // On recupère la variable motsclef // PS : les register_globals sont à OFF $motsclef = $HTTP_POST_VARS['motsclef']; // On recupère la méthode $methode = $HTTP_POST_VARS['methode']; // On explose les mots clefs // en tronquant à chaque espace $motsclef = explode(" ",$motsclef); // On compte le nombre de mots entrés par le visiteur $nbr_mots = count($motsclef); // On recherche dans la table si qqchose ressemble au premier mot clé $sql = "SELECT nom,prenom,age FROM essai WHERE nom LIKE '%$motsclef[0]%'"; // On fait une boucle pour les autres mots clés $i = "1"; while ($i<$nbr_mots) { // On specifie la methode OR ou AND et on recherche $sql .= " $methode nom LIKE '%$motsclef[$i]%'"; // On increment la variable $i $i++; } // On execute la requete $result = mysql_query($sql); // On recupère les données trouvés while ($data = mysql_fetch_array($result)) { // On affiche les resultats echo "Nom : $data[nom]<br/>"; echo "Prenom : $data[prenom]<br/>"; echo "Age : ".$data[age]." ans<br/>"; // On sépare les resultats echo '<hr size="1" width="100">'; } ?> |
vu sur netsource-fr.com
le probleme c que je ne sais pas comment l'appliquer a mon code deja existant...si quelqu'un a la reponse