Partage
  • Partager sur Facebook
  • Partager sur Twitter

Listes déroulantes "Régions" et "Département" liées...

Tous les départements ne s'affichent pas.

Sujet résolu
    20 mars 2011 à 21:57:39

    Bonsoir amis Zéros :)

    Je suis en train de m'amuser avec deux listes déroulantes : une avec la liste de toutes les régions (stockées dans ma BDD) et une seconde qui dépend de la première avec les départements correspondants (aussi stockées dans la BDD) à la région sélectionnée.

    Mais j'ai un soucis... tous les départements ne s'affichent pas (ou plutôt devrais-je dire, seul un département s'affiche) quand je choisis une région. Je ne sais vraiment pas d'où cela puisse venir puisque qu'avec certaines régions, j'ai deux départements qui sont listés.

    Je vous fait part de mon code :
    <?php
    //--------- Liste déroulante - REGION + DEPARTEMENT --------//
        $recherche = mysql_query('SELECT liste_departement.`id` AS `idd`, liste_departement.`nom` AS `dept`, liste_region.`id` AS `idr`, liste_region.`nom` AS `regi` FROM liste_departement, liste_region WHERE liste_departement.`id_region` = liste_region.`id` ')or exit(include('./includes/pb_mysql.php'));
        
        $temoin_r = 0;
        $regions = array();
        $id = 0;
    	
        while($ligne = mysql_fetch_assoc($recherche)) {
            $r = $ligne['idr'];
            $d = $ligne['idd'];
            
            if($temoin_r != $r) {
                $regions[$r] = array();
                /* J'ajoute la région */
                $regions[$r][0] = $ligne['regi'];
                $regions[$r][1] = array();
                $regions[$r][2] = array();
                $temoin_r = $r;
                $id = 0;
            }
            
            $regions[$r][1][$id] = $d;
            $regions[$r][2][$id] = $ligne['dept'];
            $id++;
        }
    
        $chaine = htmlspecialchars(serialize($regions), ENT_QUOTES); // On sérialise le tableau obtenu pour traitement par JavaScript
    	//----------------------------------------------------------//
    ?>
    

    /********** Function qui va créer la liste déroulante - DEPARTEMENT **********/
    function changeDept(tab,idr) {
        if(idr != "vide") {
    		var nbd = tab[idr][1].length; /** Nombre de département **/
    		var form_d  = '<select name="departement" id="departement">';
    		for(var j = 0;  j < nbd; j++) {
    			form_d += '  <option value="'+ tab[idr][1][j] +'">'+ tab[idr][2][j] +" ("+ tab[idr][1][j] +')<\/option>';
    		}
    		form_d += '<\/select>';
        }
        else {
            form_d = "";
        }
        document.getElementById("liste_departements").innerHTML = form_d;
    }
    

    <form action="inscription-etape-1.html" method="post" id="chgdept">
    	Choissisez un département : 
    	<select id="region" name="region" onchange="changeDept(tab,this.value);">
    		<option value="vide">- - - Choisissez une région - - -</option>
    	<?php			
    		$sql_liste_departement = mysql_query('SELECT `id`, `nom` FROM liste_region ORDER BY `nom`')or exit(include('./includes/pb_mysql.php'));
    		while ($data_liste_departement = mysql_fetch_array($sql_liste_departement)) {
    			echo '<option value="'.intval($data_liste_departement['id']).'">'.htmlentities(stripslashes($data_liste_departement['nom'])).'</option>';
    		}
    	?>
    	</select>
    	<span id="liste_departements"></span>
    	<br /><br />
    	<input type="submit" value="Choisir cette région et ce département" />
    	<input type="reset" value="Effacer" />
    </form>
    


    Je vous remercie, cordialement _dark mort_
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      21 mars 2011 à 0:35:55

      Lire cette page pour gérer des selects proprement sur tous les navigateurs avec la création de nouvelles options
      new Option(text, value, defaultSelected, selected)
      

      Voir aussi les liens en bas de page...
      • Partager sur Facebook
      • Partager sur Twitter
        21 mars 2011 à 20:24:48

        Bonsoir 007Julien :)

        J'ai complètement refais mon code avec ce que tu m'as envoyer, et cela fonctionne parfaitement. :D

        Je te remercie, cordialement _dark mort_
        • Partager sur Facebook
        • Partager sur Twitter

        Listes déroulantes "Régions" et "Département" liées...

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown