Liste déroulante dépendante

rafale69300 Messages postés 93 Statut Membre -  
rafale69300 Messages postés 93 Statut Membre -
Bonjour tout le monde.

Voici mon petit souci, j'ai un code qui permet de lié 2 liste déroulantes, je me suis aidé du site php france et je l'ai modifié un peu. Mais mon problème est que je voudrais mettre une 3ème liste déroulante, mais je n'y arrive pas. Donc si quelqu'un peut m'aider merci d'avance.
Voici le code pour les 2 listes déroulantes :

<?php /* On récupère si elle existe la valeur du batiment envoyée par le formulaire */ 
$idr = isset($_POST['bat'])?$_POST['bat']:null; 

if(isset($_POST['ok']) && isset($_POST['salle']) && $_POST['salle'] != "") 
{ 
    $bat_selectionnee = $_POST['bat']; 
    $salle_selectionne = $_POST['salle']; 
} 
?> 


  <?php 
 
    $sql1 = "SELECT `id_bat`, `nom_bat`". 
    " FROM `batiments`". 
    " ORDER BY `id_bat`"; 
    $rech_bat = mysql_query($sql1); 
    $code_bat = array(); 
    $nom_bat = array(); 
    /* On active un compteur pour les batiments */ 
    $nb_bat = 0; 
    if($rech_bat != false) 
    { 
        while($ligne = mysql_fetch_assoc($rech_bat)) 
        { 
            array_push($code_bat, $ligne['id_bat']); 
            array_push($nom_bat, $ligne['nom_bat']); 

            /* On incrémente de compteur */ 
            $nb_bat++; 
        } 
    } 
    ?> 


<form name="formulaire" action="./index.php?page=info_porte&categorie=porte" method="post" id="chgsalle"> 
    <?php 
    mysql_free_result($rech_bat); 
    /* On commence par vérifier si on a envoyé un numéro de batiment et le cas échéant s'il est différent de -1 */ 

    if(isset($idr) && $idr != -1) 
    { 
        /* Cération de la requête pour avoir les salles de ce batiment */ 
        $sql2 = "SELECT `id_salle`, `lib_salle`". 
        " FROM `salles`". 
        " WHERE `id_bat` = ". $idr ."". 
        " ORDER BY `id_salle`;"; 
        
            $rech_salle = mysql_query($sql2); 
            /* Un petit compteur pour les salles */ 
            $nd = 0; 
            /* On crée deux tableaux pour les numéros et les noms des salles */ 
            $code_salle = array(); 
            $nom_salle = array(); 
            /* On va mettre les numéros et noms des salles dans les deux tableaux */ 
            while($ligne_salle = mysql_fetch_assoc($rech_salle)) 
            { 
                array_push($code_salle, $ligne_salle['id_salle']); 
                array_push($nom_salle, $ligne_salle['lib_salle']); 
                $nd++; 
            } 
            /* Maintenant on peut construire la liste déroulante */ 
            
        } 
    
?> 

 <select name="bat" id="bat" onchange="document.forms['chgsalle'].submit();"> 
  <option value="-1">Choisissez un batiment</option> 
    <?php 
    for($i = 0; $i < $nb_bat; $i++) 
    { 
?> 
  <option value="<?php echo($code_bat[$i]); ?>"<?php echo((isset($idr) && $idr == $code_bat[$i])?" selected=\"selected\"":null); ?>><?php echo($nom_bat[$i]); ?></option> 
<?php 
    } 
    ?> 
</select> 

<select name="salle" id="salle"> 
    <option value="-1">Choisissez une salle</option> 
            <?php   
            for($d = 0; $d<$nd; $d++) 
            { 
                ?> 
  <option value="<?php echo($code_salle[$d]); ?>"<?php echo((isset($salle_selectionne) && $salle_selectionne == $code_salle[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_salle[$d]." "); ?></option> 
                <?php 
            } 
?> 
</select> </form>

A voir également:

2 réponses

rafale69300 Messages postés 93 Statut Membre 2
 
Personne pour m'aider ?

j'ai essayer cela sans succès;

<?php /* On récupère si elle existe la valeur du batiment envoyée par le formulaire */ 
$idr = isset($_POST['bat'])?$_POST['bat']:null; 

if(isset($_POST['ok']) && isset($_POST['salle']) && $_POST['salle'] != "") 
{ 
    $bat_selectionnee = $_POST['bat']; 
    $salle_selectionne = $_POST['salle']; 
	$porte_selectionne = $_POST['salle']; 
} 
?> 


  <?php 
 
    $sql1 = "SELECT `id_bat`, `nom_bat`". 
    " FROM `batiments`". 
    " ORDER BY `id_bat`"; 
    $rech_bat = mysql_query($sql1); 
    $code_bat = array(); 
    $nom_bat = array(); 
    /* On active un compteur pour les batiments */ 
    $nb_bat = 0; 
    if($rech_bat != false) 
    { 
        while($ligne = mysql_fetch_assoc($rech_bat)) 
        { 
            array_push($code_bat, $ligne['id_bat']); 
            array_push($nom_bat, $ligne['nom_bat']); 

            /* On incrémente de compteur */ 
            $nb_bat++; 
        } 
    } 
    ?> 


<form name="formulaire" action="./index.php?page=info_porte&categorie=porte" method="post" id="chgsalle"> 
    <?php 
    mysql_free_result($rech_bat); 
    /* On commence par vérifier si on a envoyé un numéro de batiment et le cas échéant s'il est différent de -1 */ 

    if(isset($idr) && $idr != -1) 
    { 
        /* Cération de la requête pour avoir les salles de ce batiment */ 
        $sql2 = "SELECT `id_salle`, `lib_salle`". 
        " FROM `salles`". 
        " WHERE `id_bat` = ". $idr ."". 
        " ORDER BY `id_salle`;"; 
        
            $rech_salle = mysql_query($sql2); 
            /* Un petit compteur pour les salles */ 
            $nd = 0; 
            /* On crée deux tableaux pour les numéros et les noms des salles */ 
            $code_salle = array(); 
            $nom_salle = array(); 
            /* On va mettre les numéros et noms des salles dans les deux tableaux */ 
            while($ligne_salle = mysql_fetch_assoc($rech_salle)) 
            { 
                array_push($code_salle, $ligne_salle['id_salle']); 
                array_push($nom_salle, $ligne_salle['lib_salle']); 
                $nd++; 
            } 
            /* Maintenant on peut construire la liste déroulante */ 
            
        } 
    
?> </form>
<form name="formulaire" action="./index.php?page=info_porte&categorie=porte" method="post" id="chgporte"> 
 <?php 
     
    /* On commence par vérifier si on a envoyé un numéro de batiment et le cas échéant s'il est différent de -1 */ 

    if(isset($idr) && $idr != -1) 
    { 
        /* Cération de la requête pour avoir les salles de ce batiment */ 
        $sql2 = "SELECT `id_porte`, `lib_porte`". 
        " FROM `portes`". 
        " WHERE `id_porte` = ". $idr ."". 
        " ORDER BY `id_porte`;"; 
        
            $rech_porte = mysql_query($sql2); 
            /* Un petit compteur pour les salles */ 
            $nd = 0; 
            /* On crée deux tableaux pour les numéros et les noms des salles */ 
            $code_porte = array(); 
            $nom_porte = array(); 
            /* On va mettre les numéros et noms des salles dans les deux tableaux */ 
            while($ligne_porte = mysql_fetch_assoc($rech_porte)) 
            { 
                array_push($code_porte, $ligne_porte['id_porte']); 
                array_push($nom_porte, $ligne_porte['lib_porte']); 
                $nd++; 
            } 
            /* Maintenant on peut construire la liste déroulante */ 
            
        } 
    
?>  </form>

 <select name="bat" id="bat" onchange="document.forms['chgsalle'].submit();"> 
  <option value="-1">Choisissez un batiment</option> 
    <?php 
    for($i = 0; $i < $nb_bat; $i++) 
    { 
?> 
  <option value="<?php echo($code_bat[$i]); ?>"<?php echo((isset($idr) && $idr == $code_bat[$i])?" selected=\"selected\"":null); ?>><?php echo($nom_bat[$i]); ?></option> 
<?php 
    } 
    ?> 
</select> 

<select name="salle" id="salle" onchange="document.forms['chgporte'].submit();"> 
    <option value="-1">Choisissez une salle</option> 
            <?php   
            for($d = 0; $d<$nd; $d++) 
            { 
                ?> 
  <option value="<?php echo($code_salle[$d]); ?>"<?php echo((isset($salle_selectionne) && $salle_selectionne == $code_salle[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_salle[$d]." "); ?></option> 
                <?php 
            } 
?> 
</select>

<select name="porte" id="porte"> 
    <option value="-1">Choisissez une porte</option> 
            <?php   
            for($d = 0; $d<$nd; $d++) 
            { 
                ?> 
  <option value="<?php echo($code_porte[$d]); ?>"<?php echo((isset($porte_selectionne) && $porte_selectionne == $code_porte[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_porte[$d]." "); ?></option> 
                <?php 
            } 
?> 
</select></form>
0
rafale69300 Messages postés 93 Statut Membre 2
 
Toujours personne pour m'aider ?
0