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

JavaScript Discussion :

liste d�roulante incompl�te (json)


Sujet :

JavaScript

  1. #1
    Membre exp�riment�
    Avatar de beegees
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par d�faut liste d�roulante incompl�te (json)
    Bonjour tout le monde,

    J'aimerais cr�er une liste de s�lection en javascript via un retour de PHP (AJAX).

    Voici le retour de PHP :


    {"":"Choix d'un pharmacien","11111":"Brankaer jean Pierre pour DUPONT Marie","11111":"Brankaer jean Pierre pour HUBERT Laurent","222222":"Cousin Jean Luc pour DUPONT Marie","222222":"Cousin Jean Luc pour HUBERT Laurent","35654":"Jamon Jose pour HUBERT Laurent"}
    La page cr�e la liste d�roulante mais ne mets que ceci :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    <select id="liste_et" onchange="afficher_info_etudiant_ou_pas(this.value,'admin')">
    <option value="">Choix d'un pharmacien</option><option value="11111">Brankaer jean Pierre pour HUBERT Laurent</option><option value="222222">Cousin Jean Luc pour HUBERT Laurent</option><option value="35654">Jamon Jose pour HUBERT Laurent</option></select>

    Je n'obtiens que 3 valeurs alors qu'il y en a 5.

    Voici le code PHP qui g�n�re la chaine json :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if($_POST['choix_admin'] == 'pharmaciens') 
    		{
    			$sql_mds = "SELECT * , etudiants.Prenom AS etudiant_prenom, etudiants.Nom AS etudiant_nom, pharmaciens.Nom AS pharmacien_nom  FROM etudiants_pharmaciens INNER JOIN etudiants ON etudiants.Matricule = id_etudiants INNER JOIN pharmaciens ON pharmaciens.INAMI = id_pharmaciens ORDER BY pharmaciens.nom, etudiants.nom ";
    			//echo $sql_mds;
    			$query_mds = mysql_query($sql_mds);
     
    			while($res = mysql_fetch_array($query_mds))
    			{
     
    				$return .='"'.$res["INAMI"].'":"'.$res["pharmacien_nom"].' '.$res["Prenom"].' pour '.$res['etudiant_nom'].' '.$res['etudiant_prenom'].'",';					
     
    			}
    Et voici le code javascript qui g�n�re la liste de s�lection :

    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
    leretour = xhr.responseText;
    				//alert(leretour);
    				emptySel(document.getElementById('liste_et'));
    				MesOption=eval("(" + leretour + ")");
     
    				for (key in MesOption) 
    				{
    					LeTexte = MesOption[key];
    					LaValeur = key;
    					//alert(LaValeur);
    					var NewOption = document.createElement('option');
    					NewOption.value = LaValeur;
    					NewOption.innerHTML=LeTexte;
    					document.getElementById('liste_et').appendChild(NewOption);
    				}
    Voyez-vous o� se trouve le probl�me ?

    Merci d'avance.
    beegees

  2. #2
    Membre exp�riment�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Par d�faut
    Bonjour,

    Comme tu l'as dit :
    ma liste d�roulante n'accepte pas la redondance des donn�es, comment r�soudre ce probl�me ?
    Mais, en fait ce n'est pas la liste d�roulante qui n'accepte pas la "redondance" des donn�es...
    Ta chaine de caract�re json (comme son nom l'indique JavaScript Object Notation) est une repr�sentation d'un objet javascript.

    Lors de l'�valuation de la chaine, javascript construit donc l'objet pour le mettre en m�moire, et dans ta chaine, tu d�finis plusieurs valeurs pour une m�me propri�t�/cl�, il n'y a que la derni�re valeur qui n'est prise en compte (�crasant la valeur pr�c�dente).

    Il faut donc que tu changes la repr�sentation de ta chaine json, tu peux t'appuyer sur un tableau d'objet, l'objet �tant constitu� ainsi :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    {
       "valeur":"...",
       "libelle":"..."
    }
    Ainsi, ta chaine devrait �tre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    [
       {"valeur":"","libelle":"Choix d'un pharmacien"},
       {"valeur":"11111","libelle":"Brankaer jean Pierre pour DUPONT Marie"},
       {"valeur":"11111","libelle":"Brankaer jean Pierre pour HUBERT Laurent"},
       {"valeur":"222222","libelle":"Cousin Jean Luc pour DUPONT Marie"},
       {"valeur":"222222","libelle":"Cousin Jean Luc pour HUBERT Laurent"},
       {"valeur":"35654","libelle":"Jamon Jose pour HUBERT Laurent"}
    ]
    Il te faut �galement modifier la fonction javascript qui va construire tes "OPTION" :
    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
    leretour = xhr.responseText;
    //alert(leretour);
    emptySel(document.getElementById('liste_et'));
    MesOption=eval(leretour);
    var nbOptions = MesOption.length;
    for (var i=0;i<nbOptions;i++) 
    {
    	LeTexte = MesOption[i].libelle;
    	LaValeur = MesOption[i].valeur;
    	//alert(LaValeur);
    	var NewOption = document.createElement('option');
    	NewOption.value = LaValeur;
    	NewOption.innerHTML=LeTexte;
    	document.getElementById('liste_et').appendChild(NewOption);
    }
    A+

  3. #3
    Membre exp�riment�
    Avatar de beegees
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par d�faut
    Salut,

    Merci pour tes explications claires et pr�cises.

    Mais, en fait ce n'est pas la liste d�roulante qui n'accepte pas la "redondance" des donn�es...
    Ta chaine de caract�re json (comme son nom l'indique JavaScript Object Notation) est une repr�sentation d'un objet javascript.

    Lors de l'�valuation de la chaine, javascript construit donc l'objet pour le mettre en m�moire, et dans ta chaine, tu d�finis plusieurs valeurs pour une m�me propri�t�/cl�, il n'y a que la derni�re valeur qui n'est prise en compte (�crasant la valeur pr�c�dente).
    L�, tu m'apprends quelque chose

    Va donc falloir que je cr�e ma chaine json sous forme de tableau comme tu me le conseilles.

    J'ai tent� ceci :

    D�but de ma chaine json :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $return .= "{data: [{val: '', text: 'Choix d\'un pharmacien'},";
    Suite de ma chaine json :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $return.= '{val: '.$res["INAMI"].',text:\''. $res["pharmacien_nom"].' '.$res["Prenom"].' pour '.$res['etudiant_nom'].' '.$res['etudiant_prenom'].'\'},';
    Je ne sais pas si c'est correcte.

    Avec mon ancienne m�thode, je rempla�ais la derni�re virgule de ma chaine par }.

    Faudra maintenant modifier cette ligne de code.

    Fin de ma chaine json :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $return=preg_replace("/,$/","}]",$return);
    Encore merci pour ton aide, j'ai appris quelque chose d'important aujourd'hui.

    beegees

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XL-2003] Liste d�roulante incompl�te
    Par JM741 dans le forum Excel
    R�ponses: 3
    Dernier message: 14/01/2015, 09h58
  2. Cr�er une liste d�roulante avec jquery et json
    Par beegees dans le forum jQuery
    R�ponses: 2
    Dernier message: 30/04/2012, 11h46
  3. R�ponses: 2
    Dernier message: 25/10/2007, 15h18
  4. liste d�roulante en ASP vbscript
    Par leeloo076 dans le forum ASP
    R�ponses: 9
    Dernier message: 17/03/2004, 16h42
  5. Listes d�roulantes li�es entre elles
    Par denisC dans le forum G�n�ral JavaScript
    R�ponses: 0
    Dernier message: 27/07/2002, 15h53

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