Alimentation liste déroulante appelée dans include
Bonjour,
Le script ci-dessous fonctionne très bien lorsqu'il est appelé directement dans l'URL.
Dans une première liste déroulante, on sélectionne une valeur, et en fonction de la valeur sélectionnée, une seconde liste déroulante est alimentée.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| <?php
include('functions.php');
// On contrôle si un choix a été fait dans la 1ère LD
// choix du centre
$idn = ISSET($_POST['sel_cent'])?$_POST['sel_cent']:null;
$idv = ISSET($_POST['sel_vil'])?$_POST['sel_vil']:null;
if(isset($_POST['ok']) && isset($_POST['sel_vil']) && $_POST['sel_vil'] != "") {
$centre_selectionne = $_POST['sel_cent'];
$ville_selectionnee = $_POST['sel_vil'];
}
// Récupération des numéros et des noms de centre
// pour alimenter la 1ère LD - sélection du centre
$sql1 = "SELECT num_cent, nom FROM centres GROUP BY nom";
$rq1 = mysql_query($sql1);
$nrc = mysql_num_rows($rq1);
//$code_cent = array();
$sel_cent = array();
while($ligne = mysql_fetch_assoc($rq1)) {
//array_push($code_cent, $ligne['num_cent']);
array_push($sel_cent, $ligne['nom']);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="chgcent">
<select name="sel_cent" onchange="document.forms['chgcent'].submit();">
<option value="-1"> - Sélectionner un centre - </option>
<?php for($i=0; $i<$nrc; $i++) { ?>
<option value="<?php echo($sel_cent[$i]); ?>"<?php echo((isset($idn) && $idn == $sel_cent[$i])?" selected=\"selected\"":null); ?>><?php echo($sel_cent[$i]); ?></option>
<?php } ?>
</select>
<?php
mysql_free_result($rq1);
if(ISSET($idn) && $idn != -1) {
$sql2 = "SELECT * FROM centres WHERE nom='".$idn."' GROUP BY ville";
$rq2 = mysql_query($sql2);
$nrv = 0;
$code_centre = array();
$code_postal = array();
$sel_ville = array();
while($row = mysql_fetch_assoc($rq2)) {
array_push($code_centre, $row['num_cent']);
array_push($code_postal, $row['cpostal']);
array_push($sel_ville, $row['ville']);
$nrv++;
}
// }
?>
<select name="sel_vil" id="sel_vil">
<option value="-1"> - Sélectionner une ville - </option>
<?php for($j=0; $j<$nrv; $j++) { ?>
<option value="<?php echo($code_centre[$j]); ?>"<?php echo((isset($idv) && $idv == $code_centre[$j])?" selected=\"selected\"":null); ?>><?php echo($code_postal[$j]." - ".$sel_ville[$j]); ?></option>
<?php } ?>
</select>
</form>
<?php
}
?> |
Par contre, lorsque je l'appelle, par le biais d'un include dans un second scipt (ci-dessous), uniquement la première liste est alimentée, et malgré le choix dans celle-ci, la seconde liste ne s'affiche pas.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php
/*******************************************/
/* Module : Suppression d'un centre */
/* Créer le : 23 / 09 / 2009 */
/* Modifié le : / / 2009 */
/* Par : Pascal Richard */
/* Version : 1.0 */
/*******************************************/
include('sel_centre.php');
$formulaire="<input type=\"hidden\" name=\"valeur\" value=\"2\">";
//$formulaire.="<label for=\"Cnom\" class=\"haut\">Nom du Centre : </label><div class=\"champs\"><input type=\"text\" name=\"Cnom\" size=\"50\" /></div>";
$formulaire.="<label for=\"Cadr\" class=\"haut\">Adresse : </label><div class=\"champs\"><input type=\"text\" name=\"Cadr\" size=\"50\" /></div>";
$formulaire.="<label for=\"Cpltadr\" class=\"haut\">Complément : </label><div class=\"champs\"><input type=\"text\" name=\"Cpltadr\" size=\"50\" /></div>";
$formulaire.="<label for=\"Cpos\" class=\"haut\">Code postal : </label><div class=\"champs\"><input type=\"text\" name=\"Cpos\" size=\"5\" /></div>";
//$formulaire.="<label for=\"Cvil\" class=\"haut\">Ville : </label><div class=\"champs\"><input type=\"text\" name=\"Cvil\" /></div>";
$formulaire.="<label for=\"Ctel\" class=\"haut\">Téléphone : </label><div class=\"champs\"><input type=\"text\" name=\"Ctel\" size=\"10\" /></div>";
$formulaire.="<label for=\"Cfax\" class=\"haut\">Fax. : </label><div class=\"champs\"><input type=\"text\" name=\"Cfax\" size=\"10\" /></div>";
$formulaire.="<label for=\"Cmel\" class=\"haut\">Mail : </label><div class=\"champs\"><input type=\"text\" name=\"Cmel\" size=\"50\" /></div>";
$formulaire.="<input type=\"submit\" name=\"submit\" value=\"Suppression\" style=\"background-color: #144974; width: 640px; margin-top: 20px; color: white;\" />";
?> |
Quelqu'un peut-il m'expliquer ce dysfonctionnement ?
Merci