3 Listes déroulantes liées

Répondre
rafale69300
le 17/06/2009 à 09:13
rafale69300
Bonjour tout le monde !
Voici mon problème, après avoir trouvé plusieurs sources sur le net, j'ai réussi à lié 2 listes déroulantes mais par rapport à ce script je n'arrive pas à lié la 3ème. Je vous laisse mon script des deux listes déroulantes. Merci par avance de votre aide.

<?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'];
}
?>

<h3>
<?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++;
}
}
?>
</h3>

<form name="formulaire" action="./index.php?page=ajout_porte&amp;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++;
}

}

?>

<table width="50%" border="0">
<tr>
<td width="45%"><p>B&acirc;timent de la Porte<span class="Etoile"> *</span> :</p>
<p>
<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>
</p></td>
<td width="55%"><p>Salle de la Porte<span class="Etoile"> *</span> :</p>
<p><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>
</p></td></tr></table></form>
Jérémy
LA GLOBULE
le 17/06/2009 à 10:56
LA GLOBULE
Ben sur la deuxième liste déroulante, tu dois faire come sur la première : coller un onchange et soumettre le formulaire en javascript.

Ensuite, à toi de gérér la valeur que tu recois de ce deuxième menu déroulant pour remplir le troisième.
rafale69300
le 17/06/2009 à 11:36
rafale69300
Voilà ce que j'ai fait par contre je dois avoir un problème avec la valeur retourné car qu'elle que soit la salle que je choississe j'ai toujours la même porte.

<?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['porte'];
}
?>

<h3>
<?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&amp;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++;
}

}

?>

<table width="50%" border="0">
<tr>
<td width="45%"><p>B&acirc;timent de la Porte<span class="Etoile"> *</span> :</p>
<p>
<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>
</p></td>
<td width="55%"><p>Salle de la Porte<span class="Etoile"> *</span> :</p>
<p><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>
</p></td></tr></table></form>

<form name="formulaire" action="./index.php?page=info_porte&amp;categorie=porte" method="post" id="chgporte">
<?php
mysql_free_result($rech_salle);
/* On commence par vérifier si on a envoyé un numéro de salle 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 portes de ce batiment */
$sql2 = "SELECT `id_porte`, `lib_porte`".
" FROM `portes`".
" WHERE `id_salle` = ". $idr ."".
" ORDER BY `id_porte`;";

$rech_porte = mysql_query($sql2);
/* Un petit compteur pour les portes */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des portes */
$code_porte = array();
$nom_porte = array();
/* On va mettre les numéros et noms des portes 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++;
}

}

?>
<p><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> </p></form>
Jérémy
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours