Problème de liste déroulante dépendantes
Posté : 11 janv. 2017, 11:36
Bonjour, Je suis actuellement en train de refaire l'intranet d'un hôpital où je fais mon stage.
Malheureusement, j'ai un soucis au niveau des listes déroulantes dépendantes.
En effet, je n'arrive pas à les afficher, plus précisément, quand je clique sur la catégorie qui est censé faire apparaître la suivante, le champ se rafraîchit] tout seul et redemande la sélection de ma 1ere catégorie.
Voici le code que j'utilise ci-dessous :
Pouvez vous m'aider :/ ? ou avez vous une autre solution pour créer des listes déroulantes dépendantes ?
Malheureusement, j'ai un soucis au niveau des listes déroulantes dépendantes.
En effet, je n'arrive pas à les afficher, plus précisément, quand je clique sur la catégorie qui est censé faire apparaître la suivante, le champ se rafraîchit] tout seul et redemande la sélection de ma 1ere catégorie.
Voici le code que j'utilise ci-dessous :
Code : Tout sélectionner
<!Doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Liens_utiles</title>
</head>
<body>
<header>
<?php
include("../Header.php");
?>
</header>
<h3>Choix de la catégorie</h3>
<?php
$serveur = "localhost";
$admin = "root";
$mdp = "vmec";
$base = "Liens_utiles";
$idr = isset($_POST['categorie'])? $_POST['categorie']:null;
?>
<?php
if (isset($_POST['ok']) && isset($_POST['contenu'])&& $_POST['contenu'] != "") {
$categorie_selectionnee = $_POST['categorie'];
$contenu_selectionne = $_POST['contenu'];
?>
<p>Vous avez sélectionné le contenu <?php echo($contenu_selectionne); ?> dans la catégorie <?php echo($categorie_selectionnee); ?></p>
<?php
}
?>
<h3>Trouver un contenu</h3>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
* car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = new mysqli($serveur, $admin, $mdp);
if ($connexion != false) {
$choixbase = mysqli_select_db($connexion, $base);
$sql1 = "SELECT `id_categorie`, `categorie` FROM `Categorie_site` ORDER BY `id_categorie`";
$rech_categorie = $connexion->query($sql1);
$code_categorie = array();
$categorie = array();
/* On active un compteur pour les régions */
$nb_categorie = 0;
if ($rech_categorie != false) {
while ($ligne = mysqli_fetch_assoc($rech_categorie)) {
array_push($code_categorie, $ligne['id_categorie']);
array_push($categorie, $ligne['categorie']);
/* On incrémente de compteur */
$nb_categorie++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="POST" name="chgcontenu">
<fieldset>
<legend>Sélectionnez une catégorie</legend>
<select name="catégorie" id="catégorie" onchange="document.forms['chgcontenu'].submit();">
<option value="-1">- - - Choisissez une catégorie - - -</option>
<?php
for ($i = 0; $i < $nb_categorie; $i++) {
?>
<option value="<?php echo($code_categorie[$i]); ?>" <?php echo((isset($idr)&& $idr == $code_categorie[$i])?"selected=\"selected\"":null); ?>><?php echo($categorie[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysqli_free_result($rech_categorie);
/* On commence par vérifier si on a envoyé un numéro de région 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 départements de cette région */
$sql2 = "SELECT `id_contenu`, `contenu` FROM `Contenu_site` WHERE `id_categorie` = " . $idr . " ORDER BY `id_contenu`;";
if ($connexion != false) {
$rech_contenu = $connexion->query($sql2);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_contenu = array();
$nom_contenu = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while ($ligne_contenu = mysqli_fetch_assoc($rech_contenu)) {
array_push($code_contenu, $ligne_contenu['id_contenu']);
array_push($nom_contenu, $ligne_contenu['contenu']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="contenu" id="contenu">
<?php
for ($d = 0; $d < $nd; $d++) {
?>
<option value="<?php echo($code_contenu[$d]); ?>"<?php echo((isset($contenu_selectionne) && $contenu_selectionne == $code_contenu[$d]) ? " selected=\"selected\"" : null); ?>><?php echo($nom_contenu[$d] . " (" . $code_contenu[$d] . ")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysqli_free_result($rech_contenu);
}
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysqli_close($connexion);
} else {
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
* paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>