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 :

recuperation de la selection dans un formulaire


Sujet :

jQuery

  1. #1
    Invité
    Invité(e)
    Par défaut recuperation de la selection dans un formulaire
    Bonjour,

    Je suis actuellement en train de mettre en place sur le formulaire de mon site la fonction Jquery autocompletion, j'ai suivie ce tuto à la lettre :
    http://macmicro.chez.aliceadsl.fr/jq...ion_jquery.php

    Le but c'est que l'utilisateur tappe le numero de departement, ensuite selon le numero tapper on obtient le resultat de la requete sql et donc le bon nom de departement.

    dans la 2eme case , il faut choisir la ville , ici pareil on tappe les premieres lettres du nom de la ville et hop on trouve la ville correspondante.

    Cependant la 2eme case ne tien pas en compte la selection de la premiere case ( le departement) . Ce qui est plutot genant car lorsque lon recherche une ville d'un departement precis, il n'y a pas c'interet de sortir toute les villes de la base.

    jai regarder le script qui pourtant ne me parait pas complexe mais je n'arrive pas a faire un select en me basant de id de la premiere case.

    ce que je raconte est peut etre confus mais, c'est tres bien expliquer sur cette page : http://macmicro.chez.aliceadsl.fr/jq...ion_jquery.php

    J'espere que l'un d'entre vous pourais m'orienter dans la bonne voie .

    Cordialement

    Greg

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 86
    Points : 304
    Points
    304
    Par défaut
    L'autocomplétion ici passe par le plugin autocomplete, utilisé avec les options par défaut.
    Son comportement basique est de passer via AJAX au script php visé, en GET, une variable q contenant ce qui a été tapé.

    Par exemple pour les villes, le jquery associé dans le tuto ressemble à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $("#ville").autocomplete("getcom.php", {  
       width: 260,  
       matchContains: true,  
       mustMatch: true,  
      selectFirst: false  
      });
    Heureusement, il est possible, via les options d'autocomplete, de faire passer d'autres variables. (la doc d'autocomplete ici: http://docs.jquery.com/Plugins/Autocomplete )

    L'option nécessaire ici s'appelle extraParams, et permet d'envoyer des paires clé/valeur supplémentaires.
    La méthode pour limiter les résultats d'un select en fonction de la sélection précédente passe donc par ces étapes:

    - récupérer l'id de l'élément précedemment sélectionné
    - passer cet id dans les options d'autocomplete
    - modifier le script php pour utiliser cet id dans la requête sql.

    D'ailleurs, si tu regardes le tuto, son auteur avait prévu la récupération de cet id dans des champs cachés, mais il a apparemment oublié de les utiliser. ^^'
    c'est ce bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       $("#depts").result(function(event, data, formatted) {  
       $("#dep_val").val(data[1]);  
       });
    Il se déclenche lorsque l'user fait son choix dans le champ #depts , et enregistre l'id de ce département dans le champ caché "dep_val" (attention: ceci n'est possible que parce que le script php faisant la requête renvoie cet id en plus du nom.), de façon à ce que cet id soit utilisable ensuite dans les requêtes de villes.

    Un petit exemple basé sur le tuto (non testé):

    code js: je reprends le code original, mais je rajoute l'id du département sélectionné dans la requête (stocké dans le tuto dans le champ caché #dep_val)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $("#ville").autocomplete("getcom.php", {  
       width: 260,  
       matchContains: true,  
       mustMatch: true,  
       selectFirst: false,
       //l'id est ajouté ici
       extraParams:  {id_dep : function(){ return $("#dep_val").val(); } }
      });
    suite à cela, le script getcom.php va recevoir une variable $_GET["id_dep"] contenant ce fameux id.
    Il va falloir modifier ce script pour utiliser la variable dans la requête afin d'en limiter les résultats:

    Code php : 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
     <?php  
       require_once('../Connections/cnx_annonce.php');  
       $q = strtolower($_GET["q"]);  
       if (!$q) return;  
       //on récupère l'id ici:
       $id=$_GET["id"];
     mysql_select_db($database_cnx_annonce, $cnx_annonce);  
       //on modifie la requête pour le prendre en compte:
       $sql = "SELECT DISTINCT nom_com as nom_com, id_com FROM   communes WHERE nom_com LIKE '%$q%' AND id_dep=$id";  
       $rsc = mysql_query($sql);  
       while($rs = mysql_fetch_array($rsc)) {  
       $cid = $rs['id_com'];  
       $cname = $rs['nom_com'];  
       echo "$cname|$cid\n";  
       }  
       ?>

    Et c'est tout.

    Notes:
    - ceci est un exemple simple, dans la réalité il faudrait gérer les cas d'exceptions (si l'user n'a pas fait de sélection dans la liste précédente, s'il a fait une sélection erronée... )
    - dans la réalité, pour des raisons de sécurité, jamais il ne faudrait utiliser directement des variables passées par l'utilisateur (même via javascript) dans les requêtes sql. Toute entrée provenant du client doit être contrôlée et échappée correctement.

    en espérant que cela réponde au moins en partie à ta question.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup pour ton aide Fenn !

    J'ai enfin compris pourquoi je n'arrivais pas a recuperer ID du champ précédant

    Un petit bug c'est glissé dans ton script php:

    mais
    en tous cas merci a toi j'ai pu regler mon soucis et comprendre le pourquoi du comment !!!

    encore merci !!


    Cordialement

    Greg

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/01/2007, 11h47
  2. Recuperer les données saisie dans un formulaire
    Par hunzi dans le forum XMLRAD
    Réponses: 3
    Dernier message: 29/08/2006, 15h22
  3. Réponses: 3
    Dernier message: 17/08/2006, 16h49
  4. Réponses: 4
    Dernier message: 12/06/2006, 11h46
  5. Réponses: 4
    Dernier message: 01/09/2004, 16h56

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