IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

UI Autocomplete sur 2 champs SQL


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 24
    Par défaut UI Autocomplete sur 2 champs SQL
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		//Autocomplete Membre dans Dialog
    		$("#Prospecteur").autocomplete({
                    source: "action_autocomplete-membre.php",
                    minLength: 1,
                    select: function(event, ui) {
                        $('#ProspecteurId').val(ui.item.id);
                    }
                });
    Et le code PHP source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	$sql_membre="SELECT * FROM Membre WHERE MembNom like '".$_GET['term']."%' AND MembActif=1 ORDER BY MembNom ASC;";
    	$res_membre = mysql_query($sql_membre);
    	while($data_membre = mysql_fetch_array($res_membre))
    	{
    			$row_array['id'] = $data_membre['MembreId'];
    			$row_array['value'] = stripslashes($data_membre['MembNom'].' '.$data_membre['MembPrenom']);
     
    			array_push($return_arr,$row_array);
     
    	}
     
     
    ///Deconnexion de la base de donnees
    deconnecter();
     
    /* Toss back results as json encoded array. */
    echo json_encode($return_arr);
    Merci d'avance pour votre aide ou vos idées.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 24
    Par défaut
    Pouvez-vous préciser votre idée, ce serait mettre un fulltext dans la table.

    pour le match against, je ne vois pas.
    Merci.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    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é ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 24
    Par défaut
    très bien, je regarde ce point.
    Merci.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 24
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_membre="SELECT * FROM Membre  WHERE MATCH (MembNom,MembPrenom) AGAINST ('" . $_GET['term'] . "') AND MembActif = 1";
    Par contre, l'autocomplétion se fait uniquement lorsque j'ai rempli en entier le nom du Membre.
    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.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    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.

Discussions similaires

  1. [AJAX] Autocompletion sur plusieurs champs
    Par popovitch130 dans le forum AJAX
    Réponses: 7
    Dernier message: 16/12/2011, 15h50
  2. autocomplete sur un champ vide
    Par Dark Ryus dans le forum jQuery
    Réponses: 1
    Dernier message: 22/09/2011, 22h24
  3. Requete sur partie champ SQL
    Par pixworld dans le forum Requêtes
    Réponses: 6
    Dernier message: 14/06/2011, 17h14
  4. Eviter les doublons sur un champ SQL Serveur 2005
    Par crashyear dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 08h02
  5. Autocompletion sur plusieur champs texte
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/07/2006, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo