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 avec base de données


Sujet :

jQuery

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Par défaut UI Autocomplete avec base de données
    Bonjour,

    je voudrais utiliser l'autocomplete en chargeant ma source depuis ma base de données, mais je suis bloqué au choix de la méthode :

    je me suis inspiré de la démo "Remote datasource" http://jqueryui.com/demos/autocomplete/#remote.

    J'ai le code suivant :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $(function() {
    	$("#client").autocomplete({
    	source: "nom.php",
    	minLength: 2,
    		select: function(event, ui) {
    		alert(ui);
    		}
    	});
    });

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label for="client">Client</label>
    <input name="client" id="client" class="ui-autocomplete ui-widget-content ui-corner-all" />

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $query = "SELECT nom from personne";
    $result = mysql_query($query, $db);
     
    while($row = mysql_fetch_assoc($result)) {
     
    foreach($row as $val)
    	$tab[] = $val;
     
    }
     
    print json_encode($tab);

    Lorsque je rentre n'importe quelles lettres (+ de 2) toute la liste est proposée, tandis que quand j'ouvre nom.php avec le serveur, que je copie le json généré après source: l'autocomplete fonctionne correctement..

  2. #2
    Membre expérimenté Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Par défaut
    Tu changes to code côté serveur en


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $query = "SELECT nom from personne WHERE nom LIKE '%" . addslashes($_GET['term']) . "%'";
    $result = mysql_query($query, $db);
     
    while($row = mysql_fetch_assoc($result)) {
     
    foreach($row as $val)
    	$tab[] = $val;
     
    }
     
    print json_encode($tab);
    vu que le plugin autocomplete envoie les caractères que tu vient de saisir à la cette page.

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Par défaut
    Merci, ça fonctionne en effet.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    Je reprends ce post car j'aimerais utiliser également ce widget. Seulement, le champ texte m'affiche la quasi totalité des résultats contenu dans la requête. Il n'y a pas de tri effectué en fonction des lettres tapées dans le champ. Mais je pense que le problème vient plus de la partie PHP que le java-script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $(function(){
                    $("#nBonCom").autocomplete({
                        source: "search.php",
                        minLenght:2
                    });
                });
    A ce propos, je n'ai pas de besoin d'afficher la sélection dans un autre champs ou une autre zone de la page comme indiqué dans la démo
    le code PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $query = 'SELECT designation
        FROM `produits`
        ORDER BY `designation`';
    $result = mysql_query($query) or die('Erreur SQL!'.$query.'<br>'.mysql_error());
    //
    while($row = mysql_fetch_assoc($result)) {
        foreach($row as $val)
            $tab[] = $val;
    }
     
    print json_encode($tab);
    merci,

  5. #5
    Membre expérimenté Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Par défaut
    Tu changes juste ta requête en

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = 'SELECT designation
        FROM `produits`
        WHERE designation LIKE \'%' . addslashes($_GET['term']) . '%\' ORDER BY `designation`';

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut re:
    Mais quel idiot je fais! Cela tombe sous le sens!
    vu que le plugin autocomplete envoie les caractères que tu viens de saisir à la page.

    Merci bien!

  7. #7
    Membre éclairé Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Par défaut
    Bonjours a tous,

    Je viens de voir que certain ont déjà trouvé la solution au problème ( de remplacer le tableau qui est proposé dans l'API par une requête SQL ) .
    Je ne suis pas sur d'avoir tous les éléments, voici le JS qui est proposé dans l'API,

    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
    18
    19
    20
    21
    22
     
    var options, a;
    jQuery(function(){
    options = { serviceUrl:'service/autocomplete.ashx' };
    a = $('#query').autocomplete(options);
     
    // local autosugest options:
    var a = $('#query').autocomplete({ 
    serviceUrl:'service/autocomplete.ashx',
    minChars:1, 
    delimiter: /(,|;)\s*/, // regex or character
    maxHeight:400,
    width:300,
    zIndex: 9999,
    deferRequestBy: 0, //miliseconds
    params: { country:'Yes' }, //aditional parameters
    noCache: false, //default is false, set to true to disable caching
     
    // local autosugest options:
     lookup: ['Paris/Lille','Lyon','Paris'],
     
      });
    Faut il le remplacer par celui la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $(function() {
    	$("#client").autocomplete({
    	source: "nom.php",
    	minLength: 2,
    		select: function(event, ui) {
    		alert(ui);
    		}
    	});
    });
    Sur le code coté serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $query = "SELECT nom from personne WHERE nom LIKE '%" . addslashes($_GET['term']) . "%'";
    $result = mysql_query($query, $db);
     
    while($row = mysql_fetch_assoc($result)) {
     
    foreach($row as $val)
    	$tab[] = $val;
     
    }
     
    print json_encode($tab);
    Je vois que l'on récupère en GET 'term' que doit on mettre dedans coté client
    nom.php?tem=...

    Merci par avance de vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [EJB] Correspondance avec Base de Données
    Par Lady_jade dans le forum Java EE
    Réponses: 6
    Dernier message: 16/09/2005, 16h47
  2. optimisation requetes avec base de données
    Par flogreg dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 05/07/2005, 14h54
  3. InstallShield avec base de données
    Par duga dans le forum C++Builder
    Réponses: 8
    Dernier message: 18/03/2005, 15h44
  4. CD ROm avec base de données
    Par marcoco dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 10/02/2005, 14h16
  5. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33

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