Aide - Recherche - Membres - Calendrier
Version complète : moteur de recherche avec plusieurs mots clefs
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
this.one
Bonjour....

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
Ldo
oula, ça me semble compliqué pour pas grand chose !
fait le en une seule requete c'est possible

mais tu ferais mieux de regarder du coté de la recherche fulltext
this.one
bon je v jeter un coup d'oeil du cote de la recherche fulltext
this.one
bon ben j'ai pas touver mieux que ca:

CODE
 <?php

$tab = $_POST['search'];  

$tab = explode (" ",$tab);

$nbr_mots = count($tab);

for($i = 1; $i < $nbr_mots; $i++) {

$sql .= "OR post_text LIKE \'%$tab[$i]%\' OR post_subject LIKE \'%$tab[$i]%\'";

}

?>



si quelqu'un peux m'aider et me dire ou je dois inserer ca pour que ce soit pris en compte et surtout si il n'y a pas d'erreur
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.