|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 24 ![]() |
bonsoir,
j'utilise Autocomplete pour faire une autocomplétion afin de rechercher des membres. J'ai un champ MembNom et un autre MembPrenom. Avec une requête SQL, je vais chercher le Nom du membre, mais j'affiche pour information le Prénom du Membre qui se situe dans un autre champ. J'aimerais pouvoir faire une recherche sur le Nom et le prénom dans le même champ texte mais ce qui signigie que je dois aller chercher dans 2 colonnes SQL différentes. MembNom et MembPrenom Je ne sais pas comment faire, dois-je ajouter une option à UI Autocomplete pour rechercher sur Nom + Prénom, ou bien dois-je faire un découpage en regex de $_GET['term'] pour scinder le nom et le prénom afin d'effectuer la requête ? Actuellement, j'utilise le code JS ci-dessous : Code :
Code :
|
||||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() sébastien courjeanInscription : novembre 2010 Messages : 204 ![]() |
Tu as pensé à la recherche FULLTEXT ? Tu crée une clé "FULLTEXT" sur tes 2 champs.
Et tu utilises MATCH AGAINST http://www.google.fr/url?sa=t&source...V2tb2t-YmOG1ZQ |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 24 ![]() |
Pouvez-vous préciser votre idée, ce serait mettre un fulltext dans la table.
pour le match against, je ne vois pas. Merci. |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() sébastien courjeanInscription : novembre 2010 Messages : 204 ![]() |
Oui mettre un fulltext sur ton champ prénom et nom.
Comme ça tu peux faire ta requete sql sur ce fulltext avec ton input, tu as regardé le lien que je t'ai donné ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 24 ![]() |
très bien, je regarde ce point.
Merci. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 24 ![]() |
Je viens de le mettre en place le fulltext dans la table:
MembNom FULLTEXT MembNom MembPrenom Voici ma requete SQL pour faire l'autocompletion Code :
$sql_membre="SELECT * FROM Membre WHERE MATCH (MembNom,MembPrenom) AGAINST ('" . $_GET['term'] . "') AND MembActif = 1"; Exemple : LALANDE Severine Il ne me propose que le libelle lorsque j'ai complètement saisi "LALANDE" et si je saisi Séverine, il me propose également "MERCIER Séverine" en résultat. Y-t-il moyen de commencer dès la 1ère lettre l'autocompletion ? Merci. |
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() sébastien courjeanInscription : novembre 2010 Messages : 204 ![]() |
Je n'ai pas testé mais d'après la traduction de :
http://dev.mysql.com/doc/refman/5.5/...t-boolean.html Si tu fais une recherche booléenne en mettant le caractère '*' après chaque mot ça devrait marcher. Exemple : 'san luc' doit devenir 'san* luc*' Pour obtenir cela utilise un split de l'espace et tu rajoutes le *. En espérant que ça fonctionne. |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 24 ![]() |
En fait ça ne fonctionne pas, car il ne reconnait pas
LAL* Exemple : LALANDE Severine Merci. |
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() sébastien courjeanInscription : novembre 2010 Messages : 204 ![]() |
Fait voir ta requête sql en fessant ce que je t'ai indiqué.
|
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 24 ![]() |
voici le code de la requête
Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() sébastien courjeanInscription : novembre 2010 Messages : 204 ![]() |
Tu dois avoir comme requête :
Code :
SELECT * FROM Membre WHERE MATCH (MembNom,MembPrenom) AGAINST ('alla*' IN BOOLEAN MODE) AND MembActif = 1 |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 24 ![]() |
Ca fonctionne en effet, Merci.
Maintenant, il me sort bien le Nom recherché dès lors que je commence à saisir le prénom il me propose tous les prénoms commençant par les mêmes lettres. Si je recherche LALANDE Françoise, il ne sort tous les Franck, François, Francis. Si tu as une idée, merci beaucoup. |
|
|
00
|
|
|
#13 |
|
Membre éclairé
![]() sébastien courjeanInscription : novembre 2010 Messages : 204 ![]() |
Sur le même principe que l'ajout du caractère '*' à la fin de chaque mot, il te suffit cette fois ci d'ajouter le caractère '+' devant chaque mot recherché comme indiquer dans la documentation que je t'ai donné en lien cela permettra de faire un "ET" au lieu du "OU" par défaut.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com