Aller au contenu

recherche par mot clef sur bdd


Sujets conseillés

Posté

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.

Posté (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é par beal2912
Posté

ça marche nickel.

merci beaucoup beal

:)

je vais pouvoir m'attaquer a la partie admin pour coller le mots-clef

youuhouu :P

Posté

À 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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...