Comparer 2 chaines de caractères en SQL

Fermé
waxor Messages postés 51 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 19 août 2012 - 19 août 2012 à 09:21
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 - 22 août 2012 à 18:16
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 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
19 août 2012 à 11:26
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 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
Modifié par moiced59 le 19/08/2012 à 10:39
Bonjour

Regarde du cote de la clause like qui va correspondre exactement a ce que tu demande .
0
waxor Messages postés 51 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 19 août 2012 2
19 août 2012 à 11:07
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 août 2012 à 14:31
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 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
21 août 2012 à 19:54
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 août 2012 à 23:01
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 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
22 août 2012 à 18:16
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