Bonjour,
J'ai cree un menu composé de 3 listes deroulantes dependante les une des autres (qui fonctionnent).
Les "options" sont tirées d'une base de données pour les 3 listes,
je voudrais recuperer le code (ou "id") de chaqu'un de mes choix(
id_cycle, id_niveau, id_filiere) , pour le moment je peu avoir que l'
"id_cycle".
Mon code est assez long j'en suis conscient mais vous vous rendrez mieu compte en copiant toute la source.
page qui cree mon menu:
<?php
echo("<?xml version="1.0" encoding="iso-8859-1"?>\n");
/* Variables de connexion : */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "ecl";
/* On récupère si elle existe la valeur du cycle envoyée par le formulaire */
$id_cycle = isset($_POST['cycle'])?$_POST['cycle']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Choix de la classe</title>
</head>
Choisir une classe
<?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 = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
// recherche de tou les cycle de la base.
$sql1 = "SELECT id_cycle, nom_cycle FROM cycle ORDER BY id_cycle";
$rech_cycles = mysql_query($sql1);
$code_cycle = array();
$cycle = array();
/* On active un compteur pour les cycles */
$nb_cycles = 0;
if($rech_cycles != false)
{
while($ligne = mysql_fetch_assoc($rech_cycles))
{
array_push($code_cycle, $ligne['id_cycle']);
array_push($cycle, $ligne['nom_cycle']);
/* On incrémente de compteur */
$nb_cycles++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="ch_classe">
<select name="cycle" id="cycle" onchange="document.forms['ch_classe'].submit();">
<option value="-1">- - - Choisissez un cycle - - -</option>
<?php
for($i = 0; $i < $nb_cycles; $i++)
{
?>
<option value="<?php echo($code_cycle[$i]); ?>"<?php
echo((isset($id_cycle) && $id_cycle == $code_cycle[$i])?"
selected="selected"":null); ?>><?php echo($cycle[$i]);
?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_cycles);
/* On commence par vérifier si on a envoyé un numéro de cycle et le cas échéant s'il est différent de -1 */
if(isset($id_cycle) && $id_cycle != -1)
{
/* Cération de la requête pour avoir les niveau de ce cycle */
$sql2 = "SELECT id_niveau,
nom_niveau FROM niveau WHERE id_cycle = ". $id_cycle ." ORDER BY
id_niveau;";
if($connexion != false)
{
$rech_niveau = mysql_query($sql2, $connexion);
/* Un petit compteur pour les niveaux */
$nn = 0;
/*
On crée deux tableaux pour les numéros et les noms des niveaux */
$code_niveau = array();
$nom_niveau = array();
/*
On va mettre les numéros et noms des niveau dans les deux tableaux */
while($ligne_niveau = mysql_fetch_assoc($rech_niveau))
{
array_push($code_niveau, $ligne_niveau['id_niveau']);
array_push($nom_niveau, $ligne_niveau['nom_niveau']);
$nn++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="niveau" id="niveau">
<?php
for($n = 0; $n<$nn; $n++)
{
?>
<option value="<?php echo($code_niveau[$n]);
?>"><?php echo($nom_niveau[$n]." "); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_niveau);
}
if($id_cycle >= "4") // si on a une filiere on affiche les choix ...
{
if(isset($id_cycle) && $id_cycle != -1)
{
/* Cération de la requête pour avoir les filiere de ce cycle */
$sql2 = "SELECT id_filiere,
nom_filiere FROM filiere WHERE id_cycle = ". $id_cycle ." ORDER BY
id_filiere;";
if($connexion != false)
{
$rech_filiere = mysql_query($sql2, $connexion);
/* Un petit compteur pour les filieres */
$nf = 0;
/*
On crée deux tableaux pour les numéros et les noms des filieres */
$code_filiere = array();
$nom_filiere = array();
/*
On va mettre les numéros et noms des filieres dans les deux tableaux */
while($ligne_filiere = mysql_fetch_assoc($rech_filiere))
{
array_push($code_filiere, $ligne_filiere['id_filiere']);
array_push($nom_filiere, $ligne_filiere['nom_filiere']);
$nf++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="filiere" id="filiere">
<?php
for($f = 0; $f<$nf; $f++)
{
?>
<option value="<?php echo($code_filiere[$f]); ?>"><?php echo($nom_filiere[$f]." "); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_filiere);
}
}
?>
</form>
<?php
$code_classe = $id_cycle;
?>
<form action="recup.php" method="post" name="form_code_classe">
">
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_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... */
?>
Un incident s'est produit lors de la connexion à la base de
données, veuiillez essayer à nouveau ultérieurement.
<?php
}
?>
</html
Page qui recupere les variable:
<html>
<?php
$code=$_POST['code_classe'];
echo "$code";
?>
</html>
Et enfin voici ma ba se de donnée :
-- -------------------------------
-- -- Base de données: `ecl` --
-- -------------------------------
-- --------------------------------------------------------
Afficher la suite