Liste déroulante dépendante

Fermé
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 - 9 juin 2009 à 10:14
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 - 9 juin 2009 à 13:21
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>

2 réponses

rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 2
9 juin 2009 à 10:42
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 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 2
9 juin 2009 à 13:21
Toujours personne pour m'aider ?
0