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 :

Récupérer valeur par jQuery


Sujet :

jQuery

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut Récupérer valeur par jQuery
    bonjour,

    j'utilise un script jquery d'autocompletion qui récupère dans un champ imput de mon formulaire la valeur des colonnes villes / départements dans la table mysql

    ça fonctionne bien mais j'aimerais récupérer également dans un champ hidden la valeur de la colonne id_ville de cette meme table

    comment puis je procéder ?

    la page du formulaire

    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
    <form id="form4" accept-charset="UTF-8" action="insertion.php"   method="post" >
    	<label>Ville de Départ :</label><input  name='villedepart' type='text'  id='depart' value='' >
     
     <script type="text/javascript">
    $(function() {
    	$("#depart").autocomplete({
    		source: "traitement.php",
    		minLength: 2
    	});				
    });
    </script>
      <input type="hidden" id="id_ville" name="id_ville" value="" />
    <input name="submit" type="submit"  value="Envoyez"  />
     
    </form>
    et la page traitement.php qui retourne les valeurs de la table pour remplir l'input

    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
    17
    18
    19
    <?php 
    if (isset($_GET['term'])){
     
    	try {
     
    	    $stmt = $connection->prepare('SELECT id_ville,villes,departement FROM communes WHERE villes LIKE :term LIMIT 10'  );
    	    $stmt->execute(array('term' => '%'.$_GET['term'].'%'));
     
    	    while($row = $stmt->fetch()) {
    	        $return_arr[] =  $row['villes']." / ".$row['departement'];
    			 			 	    }
     
    	} catch(PDOException $e) {
    	    echo 'ERROR: ' . $e->getMessage();
    	}
     
        echo json_encode($return_arr);
    	}
    ?>

    merci pour votre aide

  2. #2
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Pour te mettre sur la voie :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $(function() {
      $("#depart").autocomplete({
        source: "traitement.php",
        minLength: 2,
        select : function( event, ui ){
          // ici
        }
      }
    });

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    merci pour ta réponse Kaamo

    peux t'on après le traitement de la requête php , envoyez plusieurs variables par json_encode ( et récupérer dans la page du formulaire ,en plus du traitement de l'autocomplete , la valeur de la variable $id_ville pour l'inclure dans le champ hidden "#id_ville" ?

    bref , pourrais tu me mettre un peu plus sur la voie , c'est le brouillard pour moi

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    y'a pas un event oncomplete ou onselect sur ce plugin ?

    si c'est le cas rajoute un input hidden et modifies en le value sur cet event ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    voila j'ai suivie la piste de kaamo

    j'ai modifié le script autocomplete ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript">
    $(function() {
      $("#depart").autocomplete({
        source: "traitement.php",
        minLength: 2,
       select: function(event, ui) {
                        $('#id_ville').val(ui.item.id_ville);
                    }  
     
    				});	
    });
    </script>
    mais ça ne doit pas remplir le champ de type hiden qui a comme name "id_ville"
    car ça m'envoie bien la ville et le département mais pas l'id_ville

  6. #6
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    SpaceFrog : oui, c'est à mettre dans la fonction "select" prévue pour ça. C'est déclenché quand l'utilisateur choisit une donnée de la liste renvoyée.

    serna : C'est normal, en PHP tu sembles renvoyer les données sous forme de <ville> / <departement>. Si tu ne ramènes pas l'id de la ville aussi ...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    je récupère effectivement les données sous forme de <ville> / <departement>
    car c'est comme ça que je veux qu'elle s'affichent dans le select et je ne sait pas comment envoyé en plus , id_ville via json_encode en plus de ces deux données sans que ça ne s'affiche dans le select

    voila ma page php avec en plus la variable pour l'id_ville, mais comment l'envoyer par json_encode ?


    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
    17
    18
    19
    20
    <?php 
    if (isset($_GET['term'])){
     
    	try {
     
    	    $stmt = $connection->prepare('SELECT id_ville,villes,departement FROM communes WHERE villes LIKE :term LIMIT 10'  );
    	    $stmt->execute(array('term' => '%'.$_GET['term'].'%'));
     
    	    while($row = $stmt->fetch()) {
    	        $return_arr[] =  $row['villes']." / ".$row['departement'];
                    $return_id =  $row['id_ville'];
    			 			 	    }
     
    	} catch(PDOException $e) {
    	    echo 'ERROR: ' . $e->getMessage();
    	}
     
        echo json_encode($return_arr);
    	}
    ?>

  8. #8
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Il faut ruser un peu
    Soit tu enrichies le tableau renvoyé via json_encode.
    Soit tu sépares une nouvelle fois les données à l'aide de "/".

    La première option semble la plus propre, cela évite d'avoir à "splitter" le résultat. Quelque chose dans le genre donc :

    En PHP, tu retournes l'ensemble des données de la requête. Attention, dans la requête, il faut un champ "label", donc renomme, par exemple, le champ "villes" => "label"
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $stmt = $connection->prepare('SELECT villes as label, departement, id_ville FROM communes WHERE villes LIKE :term LIMIT 10'  );
    // .... le reste ....
    while ( .... ) 
      $return_arr[] =  $row; 
     
    // $return_arr après la boucle a donc une structure de ce style : [["label" => "Ville1", "departement" => "00001", "id_ville": "1"], ["label" => "Ville2", "departement" => "00002", "id_ville": "1"], ...]
     
    echo json_encode($return_arr); // Ce qui donne en Javascript un JSON de ce type : [ 
      {"label": "Ville1", "departement": "00001", "id_ville": "id1"},
      {"label": "Ville2", "departement": "00002", "id_ville": "id2"}, 
      ....
    ]
    Donc, tu n'as plus qu'à donner la méthode de traitement à ton autocomplete
    pour qu'il puisse digérer la soupe que tu lui renvoies (comme ce n'est plus une simple chaine de caractère basique)
    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
    $(function() {
      $("#depart").autocomplete({
        source: "traitement.php",
        minLength: 2,
        select : function( event, ui ){
          $( "#depart" ).val(ui.item.label + " / " + ui.item.departement); // dans le champ visible
          $('#id_ville').val(ui.item.id_ville); // dans le champ caché
          return false;
        } /* Le coté un peu technique dans ce cas, il faut redéfinir la liste affichée par l'autocomplete en surchargeant "_renderItem" */
      }).data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
          .data( "item.autocomplete", item )
          .append( "<a>" + item.label + " / " + item.departement + "</a>" )
          .appendTo( ul );
      };
    });
    EDIT : correction de la requête, il faut qu'il y ait un champ nommé "label" pour que l'auto-complete fonctionne. Le Fiddle qui va avec

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    un grand merci Kaamo. le script fonctionne parfaitement.

    je suis vraiment épaté par l’ingéniosité de ta solution.

    et encore merci d'avoir documenté ton script et de l'avoir mis sur fiddle.

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

Discussions similaires

  1. Récupérer valeur input JQUERY
    Par teddol dans le forum jQuery
    Réponses: 9
    Dernier message: 23/06/2015, 16h59
  2. Récupérer valeur Tree Jquery
    Par gueguenk dans le forum jQuery
    Réponses: 4
    Dernier message: 30/06/2014, 12h09
  3. Récupérer valeurs par défauts
    Par TryExceptEnd dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/09/2007, 15h14
  4. Trigger : Récupérer la valeur par défaut d'une colonne
    Par mcspr2002 dans le forum Administration
    Réponses: 5
    Dernier message: 12/01/2007, 14h53
  5. Récupérer valeur par défaut
    Par ekinoxe dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/02/2006, 11h39

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