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 :

Liste déroulante dynamique


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut Liste déroulante dynamique
    Bonjour, je souhaite alimenter un select via une base de données.
    Je n'arrive pas à récupérer les données contenues dans le json car mon select m'indique undefined.

    Voici mes codes je pense que ce sera plus explicite.

    Mon Html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="artistes" id="artists" />
    Mon Js
    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
    function populateArtists() {
     
        $.getJSON('getArtists.php', function(data) {
     
            var select = $('#artists');
            var options = select.attr('options');
            $('options', select).remove();
     
            $.each(data, function(index, array) {
                options[options.length] = new Option(array['artistes']);
            });
     
        });
     
    }
     
    $(document).ready(function() {
     
    	populateArtists();
     
     
    });
    Mon Php
    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
     
    <?php include_once("connexion.php"); ?>
    <?php
    mysql_select_db($database, $base);
    $query_artists = "SELECT * FROM artists ORDER BY art_name ASC";
    $artists = mysql_query($query_artists, $base) or die(mysql_error());
    $row_artists = mysql_fetch_assoc($artists);
    $result = array();
    ?>
     
    <?php
    do {  
    $result[] = $row_artists;
    } while ($row_artists = mysql_fetch_object($artists));
    echo '{"artists":'.json_encode($result).'}';
    ?>
    J'ai retourné le problème dans tous les sens et je ne vois pas ce qui cloche.

    Merci d'avance pour votre aide et compréhension.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    var options = select.attr('options'); : il n'existe pas d'attribut options.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $.getJSON('getArtists.php', function(data) {
    	var objSelect = $('#artists');
     
    	objSelect.empty();		
     
    	$.each(data, function(i, item) {
    		// debug
    		console.log(i, item);
     
    		// remplacer les ?? par les valeurs contenues dans l'item, par exemple item[0] et item[1]
    		//objSelect.append('<option value="' + XX + '">' + YY + '</option>');
    	});
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    Bonsoir danielhagnoul,

    Merci pour ton aide, je récupère bien mes données que je vois bien dans la console par contre dans mon select j'ai [object Object]. Je dois mal m'y prendre pour récupérer mes données voici ce que j'ai fait

    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
    function populateArtists() {
     
        $.getJSON('getArtists.php', function(data) {
    	var objSelect = $('#artists');
     
    	objSelect.empty();		
     
    	$.each(data, function(i, $result) {
    		// debug
    		console.log(i, $result);
    		objSelect.append('<option value="' + $result[0] + '">' + $result[1] + '</option>');
    	});
    });
     
    }
     
    $(document).ready(function() {
     
    	populateArtists();
     
     
    });
    $result est la variable contenant les données que vous pouvez retrouver dans le php plus haut.

    Merci d'avance.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Attention, j'ai écrit : "par exemple item[0] et item[1]".

    Je n'ai aucun moyen de connaître la structure de $result. La structure de la réponse est affichée par : console.log(i, item);

    Nota bene : la variable PHP $result n'a rien à voir avec la variable JavaScript que j'ai appelée item et que vous appelé $result, c'est data qui contient le résultat envoyé par le PHP.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    Bonsoir,

    En effet, j'ai certainement du m'emmêler les pinceaux vu le peu de connaissance que je possède.

    Je reprends en donnant de plus amples informations pour vous faciliter la tâche.

    Mon Php que vous retrouvez plus haut récupère les données dans ma base de données. En l'occurrence la table artists qui a deux champs art_id(valeurs que je souhaite allouer à l'option value) et art_name (valeur que je souhaite allouer au cœur de mon select).

    Dans la console $result retourne:

    artists [Object { art_id="1208", art_name"Police"}, Object { art_id="1190", art_name="Toto"}, Object { art_id="1136", art_name="702"}]

    qui correspond à la dernière ligne de mon php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '{"artists":'.json_encode($result).'}';
    Je souhaite utiliser les valeurs de art_id et art_name présente dans la console mais je ne sais comment y accèder.

    Tout ce que j'ai dans mon select c'est [object Object]

    Merci d'avance pour votre compréhension

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    PHP envoie donc l'équivalent de : var data = {"artists":[{ art_id:"1208", art_name:"Police"}, { art_id:"1190", art_name:"Toto"}, { art_id:"1136", art_name:"702"}]};.

    C'est cet "artists" qui complique un peu l'écriture !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $.getJSON('getArtists.php', function(data) {
    	var objSelect = $('#artists');
     
    	objSelect.empty();		
     
    	$.each(data.artists, function(i, item) {
    		objSelect.append('<option value="' + item.art_id + '">' + item.art_name + '</option>');
    	});
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. récupérer la valeur d'une liste déroulante dynamique
    Par grinder59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/01/2006, 17h51
  2. Liste déroulante dynamique
    Par Screw16 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/10/2005, 20h37
  3. [HTML] liste déroulante dynamique
    Par lacousinee dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2005, 20h51
  4. Liste déroulante dynamique ?
    Par Regis.C dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 12h09
  5. [FORMULAIRE] Liste déroulante dynamique
    Par bchristo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2005, 10h07

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