PHP/MySql > Clause LIKE ...

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Inscription: 8 Nov 2004

PHP/MySql > Clause LIKE ...

Message le Jeu Fév 16, 2006 6:05

Hello @ tous!

Je veux faire une recherche dans mysql, dans un champ varchar, qui contient des noms d'artistes.

Je voudrais faire une recherche, par exemple que quand on tape "farmer", il me sorte "Mylene Farmer". Pour l'instant, j'ai fait ceci:

WHERE artiste LIKE '%$name%'");

et cela semble fonctionner.

Par contre, si je met "Gislain Farmer", la il me sors pas ma Mylene adoré, alors que je veux qu'il me la trouve!!!

Comment faire?


mr_go
WRInaute passionné
WRInaute passionné
 
Messages: 1945
Inscription: 21 Sep 2005

Message le Jeu Fév 16, 2006 8:08

Normal, il va rechercher LIKE %Gislain Farmer%.

Il te faudrait faire un parsing de la chaine de caractère pour dégager le nom "Farmer"...

hollenfurst
WRInaute discret
WRInaute discret
 
Messages: 53
Inscription: 13 Juil 2005

mysql

Message le Jeu Fév 16, 2006 8:29

en effet il te suffit de scinder ta string recherchée en fonction des espace par exemple et tu les place dans ta requete style 'WHERE nom=bibi OR nom=farmer

mf
WRInaute discret
WRInaute discret
 
Messages: 161
Inscription: 7 Mai 2003

Re: mysql

Message le Jeu Fév 16, 2006 10:16

hollenfurst a écrit:en effet il te suffit de scinder ta string recherchée en fonction des espace par exemple et tu les place dans ta requete style 'WHERE nom=bibi OR nom=farmer


plustot ca :
WHERE nom like '%bibi%' OR nom like '%farmer%'


mr_go
WRInaute passionné
WRInaute passionné
 
Messages: 1945
Inscription: 21 Sep 2005

Message le Jeu Fév 16, 2006 10:19

Oui plutot ca effectivement...

Pour optimiser, tu peux toujours t'amuser à tester les SOUNDS mais je n'ai jamais testé...


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Re: mysql

Message le Jeu Fév 16, 2006 11:40

mf a écrit:
hollenfurst a écrit:en effet il te suffit de scinder ta string recherchée en fonction des espace par exemple et tu les place dans ta requete style 'WHERE nom=bibi OR nom=farmer


plustot ca :
WHERE nom like '%bibi%' OR nom like '%farmer%'


Y a-t-il moyen d'inclure de la pertinence dans ce genre de tri ? Par exemple, en mettant les résultats avec Mylène Farmer devant ceux avec Farmer uniquement ?


mr_go
WRInaute passionné
WRInaute passionné
 
Messages: 1945
Inscription: 21 Sep 2005

Message le Jeu Fév 16, 2006 11:44

Ca risque d'être un peu dur ca!

Je passe mon tour pour celle là!

:D


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Message le Jeu Fév 16, 2006 11:53

mr_go a écrit:Ca risque d'être un peu dur ca!

Je passe mon tour pour celle là!

:D


Je ne vois pas non plus comment faire en MySQL, c'est pour ça que je pose la question ;-). La seule que je vois, c'est un second niveau de tri en PHP du résultat SQL..


mr_go
WRInaute passionné
WRInaute passionné
 
Messages: 1945
Inscription: 21 Sep 2005

Message le Jeu Fév 16, 2006 11:57

Ah parce que tu voulais tout faire en Mysql d'un coup ?
Ca me parait impossible.


Du reste l'implémentation de ce système doit être assez colossale... bon courage ;)

mf
WRInaute discret
WRInaute discret
 
Messages: 161
Inscription: 7 Mai 2003

Re: mysql

Message le Jeu Fév 16, 2006 13:27

ecocentric a écrit:
mf a écrit:
hollenfurst a écrit:en effet il te suffit de scinder ta string recherchée en fonction des espace par exemple et tu les place dans ta requete style 'WHERE nom=bibi OR nom=farmer


plustot ca :
WHERE nom like '%bibi%' OR nom like '%farmer%'


Y a-t-il moyen d'inclure de la pertinence dans ce genre de tri ? Par exemple, en mettant les résultats avec Mylène Farmer devant ceux avec Farmer uniquement ?


sans vouloir m'avancé ni avoir la solution sous le coude mais
moi je me suis déja fait un classement avec le mot juste avant la chaine....
je sais pas si c'est clair mais avec un exemplce ca va etre mieux...

genre avec le mot : "mot"
et les champs suivant : "le mot le plus long" et "le moteur thermique"
la liste des resulat sera :
-le mot le plus long (mot juste présent)
-le moteur thermique (chaine présente)

alors je pense que c'est peut être jouable.....

shrom
WRInaute impliqué
WRInaute impliqué
 
Messages: 865
Inscription: 5 Juil 2004

Re: mysql

Message le Jeu Fév 16, 2006 13:54

plustot ca :
WHERE nom like '%bibi%' OR nom like '%farmer%'


Y a-t-il moyen d'inclure de la pertinence dans ce genre de tri ? Par exemple, en mettant les résultats avec Mylène Farmer devant ceux avec Farmer uniquement ?


Il faut pour cela utiliser les fonctions de recherche Full Text de MySQL.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité