Je dois construire un formulaire de recherche et je rencontre quelques
probl�mes.
J'ai un formulaire de recherche avec 5 textbox pour les mots cl�s. La recherche
se fait sur un champ d'une table mysql.
- Je cherche un moyen de trouver les enregistrements de la table contenant
exactement les mots recherch�s et non pas les mots contenant le ou les mots
cl�s. Ex. si je recherche le mot "mal", je ne veux pas "maladie". J'avais dans
mon code : WHERE ligne LIKE '%".$data."%' mais "maladie" est trouv�. Si j'ajoute
des espace entre les %% et que la phrase commence ou termine par mon mot cl�, le
syst�me ne le trouve pas.
- Aussi, je veux accepter les apostrophes dans les mots cl�s, exemple, "p'tit",
"t'sais" mais avec la ligne : preg_match("#\b(".$frm_keywords.")\b#i", $ligne),
le syst�me n'accepte pas l'apostrophe. Le $frm_keywords est la concat�nation des
mots cl�s du formulaire avec des pipes ( | ) entre chaque mot.
Donc, si vous avez une id�e ou des exemples pour pouvoir
m'aider,�j'appr�cierais grandement.
Merci de votre aide.
Le 03/06/2009 23:13, bobino75 a �crit :
>
> - Je cherche un moyen de trouver les enregistrements de la table contenant
> exactement les mots recherch�s et non pas les mots contenant le ou les mots
> cl�s. Ex. si je recherche le mot "mal", je ne veux pas "maladie". J'avais dans
> mon code : WHERE ligne LIKE '%".$data."%' mais "maladie" est trouv�. Si j'ajoute
> des espace entre les %% et que la phrase commence ou termine par mon mot cl�, le
> syst�me ne le trouve pas.
L� c'est plut�t une question pour f.c.a.sgbd que pour f.c.l.php. Cela
dit, je ne connais rien � la syntaxe SQL, mais si la concat�nation se
fait avec � + � tu peux essayer un truc du genre :
WHERE ' '+ligne+' ' LIKE '% $data %'
En d'autres termes, tu cherches ton mot entre deux espaces, dans un
champ que tu as lui-m�me augment� de deux espaces, une au d�but et une
� la fin.
> - Aussi, je veux accepter les apostrophes dans les mots cl�s, exemple, "p'tit",
> "t'sais" mais avec la ligne : preg_match("#\b(".$frm_keywords.")\b#i", $ligne),
> le syst�me n'accepte pas l'apostrophe. Le $frm_keywords est la concat�nation des
> mots cl�s du formulaire avec des pipes ( | ) entre chaque mot.
J'ai une question idiote, pardonne-moi de la poser : tu es s�r que tu as
bien � p'tit � dans $frm_keywords et pas, par exemple, � p\'tit � ?
Cordialement,
--
Olivier Miakinen
Normal, le "%" est un joker qui remplace z�ro ou plusieurs caract�res.
Si vous voulez trouver un champ qui contient _uniquement_ "mal", il vous
faut :
WHERE ligne LIKE $data
> - Aussi, je veux accepter les apostrophes dans les mots cl�s, exemple, "p'tit",
> "t'sais" mais avec la ligne : preg_match("#\b(".$frm_keywords.")\b#i", $ligne),
> le syst�me n'accepte pas l'apostrophe. Le $frm_keywords est la concat�nation des
> mots cl�s du formulaire avec des pipes ( | ) entre chaque mot.
La r�ponse d'Olivier me parait une bonne orientation pour les recherches.
--
Micha�l DENIS