Comparer 2 chaines de caractères en SQL

waxor Messages postés 59 Statut Membre -  
moiced59 Messages postés 1161 Statut Membre -
Bonjour à tous,

j'ai un petit problème au niveaux d'une requête SQL. Je suis en train de développer un site web sur lequel je stocke mes articles dans une base de donnée.

je suis en train d'essayer d'ajouter une petite barre de recherche pour retrouver les différents articles de mon site et je cherche un moyen pour que ma requête SQL me permette de ressortir uniquement les résultats qui contiennent l'ensemble des mots contenu de la recherche dans le titre.

En gros la recherche de l'utilisateur est récupérée, retravaillée (on enlève les un, une, des, le, la, les, l', etc...) et une fois que l'on à que les mots significatifs il faut comparer cette requête aux titres des mes articles et ressortir ceux dont l'ensemble des mots de la recherche se trouvent dedans (même si il ne sont pas dans le bon ordre).


----------------------------------------------------------------------------------

Exemple :

Recherche :
Élections 2012

Résultats :
Élections présidentielles 2012
Les élections législatives de 2012
2012 : Les élections vont elles changer les choses

----------------------------------------------------------------------------------


Voila j'espère que ce n'est pas trop confus.

Merci d'avance pour votre aide.


Jean.

A voir également:

7 réponses

moiced59 Messages postés 1161 Statut Membre 60
 
Re

Alors pour un de mes sites g procedé comme ca :


J'ai supprimé tout les mots de 2 lettres de la recherche puis j'ai mis les mots restant de la recherche dans un tableau .

J'ai ensuite fais une requete insert dans une table temporaire du resultat des recherches puis a lafin je me suis servi de ma table temporaire avec les bon titre pour afficher mes liens :


Pour reprendre ton exemple :

Recherche :

Élections de 2012


Résultats :

Élections présidentielles 2012
Les élections législatives de 2012
2012 : Les élections vont elles changer les choses

1er :

Tu fais un explode avec ESPACE :

Ensuite tu analyse ton tableau de resultat :

Tu fais une boucle sur ton tableau :

Puis :

If strlen($[Recherche1]) > 2 then

tu fais un insert into table_temp ...... values ( select tes champs from ta table where Titre like % $Tavariable %)


Puis tu te sert de ta table temporaire pour afficher tes liens


J'espere etre claire dans la facon de procede ;)
1
moiced59 Messages postés 1161 Statut Membre 60
 
Bonjour

Regarde du cote de la clause like qui va correspondre exactement a ce que tu demande .
0
waxor Messages postés 59 Statut Membre 2
 
Tu penses que la clause LIKE peut analyser les mots séparément et pas comme une chaine brut ou tout doit être dans le même ordre ? Ou peu t'être que je dois stocker ma recherche dans un array avec chaque mots séparés, mais dans ce cas SQL peu t'il parcourir un array PHP dans son ensemble sans avoir à préciser $array[1], $array[2], $array[3] ?
0
Alain_42 Messages postés 5413 Statut Membre 894
 
et si tu fait un and avec like

"SELECT ...... WHERE ton_champ_titre LIKE '%".$mot1."%' AND LIKE '%".$mot2."%' AND '%".$mot3."%'";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moiced59 Messages postés 1161 Statut Membre 60
 
pas and mais or ;) et faut remettre le champ

"SELECT ...... WHERE ton_champ_titre LIKE '%".$mot1."%' or ton_champ_titre LIKE '%".$mot2."%' ......
0
Alain_42 Messages postés 5413 Statut Membre 894
 
il veut ressortir ceux dont l'ensemble des mots de la recherche se trouvent dedans

donc il faut bien AND à mon avis

d'accord pour l'oubli du champ dans chaque LIKE
0
moiced59 Messages postés 1161 Statut Membre 60
 
Bah rien ne sert de séparer les mots si il fait un AND ????


Ceci dis il ne reagit meme plus dc ca sert a rien ;)
0