Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Formulaire de recherche - Besoin d'aide

3 views
Skip to first unread message

bobino75

unread,
Jun 3, 2009, 5:13:37 PM6/3/09
to
Bonjour,

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.

Olivier Miakinen

unread,
Jun 3, 2009, 6:12:46 PM6/3/09
to
Bonjour,

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

Michael DENIS

unread,
Jun 4, 2009, 1:50:21 AM6/4/09
to
bobino75 a �crit :

> WHERE ligne LIKE '%".$data."%' mais "maladie" est trouv�.

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

0 new messages