Recuperation valeur liste déroulante

Nico26
Invité n'ayant pas de compte PHPfrance

19 janv. 2007, 12:05

Bonjour

J'ai 2 listes déroulantes liées entre elles suivant le tuto Solution alternative : AJAX trouvé à ce lien
http://www.phpfrance.com/forums/voir_sujet-4562.php

Il fonctionne super bien. Je souhaite seulement récupérer le value de <option></option>, pas la valeur sélectionnée, dans une variable et que chaque fois que je sélectionne une autre valeur dans la 2ème liste (sur le onchange) ou quand je change de valeur dans la 1ère liste (ce qui va changer le contenu de la 2ème liste), cette variable soit mise à jour.

Cette variable je l'affiche en dessous.

Voici le code

Code : Tout sélectionner

<?php /** * Code qui sera appelé par un objet XHR et qui * retournera la liste déroulante des bâtiments * correspondant au secteur sélectionnée. */ // Chargement des paramètres //de connexion à la base de données include ('connexion.php'); /* On récupère l'identifiant du secteur choisi. */ $idr = isset($_GET['idr']) ? $_GET['idr'] : false; /* Si on a un secteur, on procède à la requête */ if(false !== $idr) { /* Création de la requête pour avoir les bâtiments de ce secteur */ $sql2 = "SELECT `ID_cles` as idc, `Lieu`". " FROM `tbl_cles`". " WHERE `Num_Secteur` = ". $idr . " ORDER BY idc;"; //Exécution de la requête $rech_lieu = mysql_query($sql2, $db_connexion); /* Un petit compteur pour les bâtiments */ $nd = 0; /* On crée deux tableaux pour les numéros et les noms des bâtiments */ $code_lieu = array(); $nom_lieu = array(); /* On va mettre les numéros et noms des bâtiments dans les deux tableaux */ while(false != ($ligne_lieu = mysql_fetch_assoc($rech_lieu))) { $code_lieu[] = $ligne_lieu['idc']; $nom_lieu[] = $ligne_lieu['Lieu']; $nd++; } /* Maintenant on peut construire la liste déroulante */ $liste = ""; $liste .= '<select name="Lieu" id="Lieu" onchange="">'."\n"; for($d = 0; $d < $nd; $d++) { $liste .= ' <option value="'.$code_lieu[$d].'">'.htmlentities($nom_lieu[$d]).' '.$code_lieu[$d] .'</option>'."\n"; } $liste .= "</select>"."\n"; [b] /*Je veux recuperer $code_lieu[$d]*/ /*et l'afficher ici [i]echo "Cle:".variable_recupere;[/i][/b] /* Un petit coup de balai */ mysql_free_result($rech_lieu); /* Affichage de la liste déroulante */ echo($liste); } /* Sinon on retourne un message d'erreur */ else { echo("<script language='Javascript'>alert('Une erreur s'est produite.\nLe secteur sélectionné comporte une donnée invalide.')</script>"); } ?>
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 janv. 2007, 12:31

Je souhaite seulement récupérer le value de <option></option>, pas la valeur sélectionnée
C'est quelle value du select que tu souhaites récupérer si c'est pas celle sélectionnée ?
    /*Je veux recuperer $code_lieu[$d]*/ 
    /*et l'afficher ici [i]echo "Cle:".variable_recupere;
c'est sensé être quoi variable_recupere ?
Si c'est juste le dernier id de ton select, suffit de faire un :
echo $code_lieu[count($code_lieu)-1];
Si c'est tous les id, il faut mettre le echo dans la boucle.
Si c'est tous les id, mais que tu veux les afficher après le select, tu les stoques dans une variable temporaire que tu affiches après..

je vois pas vraiment ce qui te gène....
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Nico26
Invité n'ayant pas de compte PHPfrance

19 janv. 2007, 12:41

Désolé je me suis mal exprimé. Je débute en php.

En fait je veux récupérer le value de la valeur sélectionné dans la liste.
variable_recuperer est le value de la valeur sélectionné dans la liste.

Voila pour les précisions

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 janv. 2007, 12:58

En fait si j'ai bien compris, tu veux faire afficher dynamiquement la valeur de l'attribut "value" de l'option sélectionnée en dehors de la liste ?

pour ça il va te falloir renseigner l'attribut onChange du select pour lui faire exécuter cette action et ajouter un élément (champ input, span, ...) dans lequel on va pouvoir afficher la valeur :

Je vais opter pour un <span> dans un premier temps. Je lui donne un id afin de pouvoir l'identifier en javascript dans la page :
/*Je veux recuperer $code_lieu[$d]*/ 
    /*et l'afficher ici [i]echo "Cle:".variable_recupere; */
echo '<span id="valeurSelect"></span>'; 
Je ne met rien dedans, le contenu sera renseigné par le choix du select, mais on pourrait très envisager une valeur par défaut :)

Ensuite on ajoute le onChange dans le select :
$liste .= '<select name="Lieu" id="Lieu" 
  onchange="document.getElementById(\'valeurSelect\').innerHTML = this.options[this.selectedIndex].value;">'; 
Pour le détail :

document.getElementById('valeurSelect') => correspond au span
document.getElementById('valeurSelect').innerHTML => correspon au contenu du span

this => correspond à l'élément courrant (le select donc :))
this.options => correspond au tableau d'option du select
this.selectedIndex => correspond à l'index de l'élément sélectionné
this.options[this.selectedIndex] => correspond a l'option selectionnée
this.options[this.selectedIndex].value => correspond à la valeur de l'option sélectionnée
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Nico26
Invité n'ayant pas de compte PHPfrance

19 janv. 2007, 13:04

Super Merci bien!!

C'est exactement ce qu'il me fallait. :D :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 janv. 2007, 17:01

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton [Mettre Résolu] qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer