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>
<body>
<h3>Choisir une classe</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 = 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;
?>
<br>
<form action="recup.php" method="post" name="form_code_classe">
<input type="hidden" name="code_classe" value="<?php echo "$code_classe" ?>">
<input type="submit" name="ok" id="ok" value="Valider" />
</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... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html
Page qui recupere les variable:
<html>
<body>
<?php
$code=$_POST['code_classe'];
echo "$code";
?>
</body>
</html>
Et enfin voici ma ba se de donnée:
-- -------------------------------
-- -- Base de données: `ecl` --
-- -------------------------------
-- --------------------------------------------------------
--
-- Structure de la table `cycle`
--
CREATE TABLE `cycle` (
`id_cycle` int(4) NOT NULL auto_increment,
`nom_cycle` varchar(50) NOT NULL default '',
PRIMARY KEY (`id_cycle`)
);
-- --------------------------------------------------------
--
-- Structure de la table `niveau`
--
CREATE TABLE `niveau` (
`id_niveau` char(2) NOT NULL default '',
`nom_niveau` varchar(50) NOT NULL default '',
`id_cycle` int(4) NOT NULL default '00',
PRIMARY KEY (`id_niveau`),
KEY `id_cycle` (`id_cycle`)
);
-- --------------------------------------------------------
--
-- Structure de la table `filiere`
--
CREATE TABLE `filiere` (
`id_filiere` int(4) NOT NULL auto_increment,
`nom_filiere` varchar(50) NOT NULL default '',
`id_cycle` tinyint(4) NOT NULL default '00',
PRIMARY KEY (`id_filiere`),
KEY `id_cycle` (`id_cycle`)
);
-- --------------------------------------------------------
--
-- Contenu de la table `cycle`
--
INSERT INTO `cycle` VALUES ('01', 'Ecole maternelle');
INSERT INTO `cycle` VALUES ('02', 'Ecolle primaire');
INSERT INTO `cycle` VALUES ('03', 'College');
INSERT INTO `cycle` VALUES ('04', 'Lycee general');
INSERT INTO `cycle` VALUES ('05', 'Lycee technique');
INSERT INTO `cycle` VALUES ('06', 'Lycee professionnel');
INSERT INTO `cycle` VALUES ('07', 'Etudes superieurs');
--
-- Contenu de la table `niveau`
--
INSERT INTO `niveau` VALUES ('01', 'Petite section', '01');
INSERT INTO `niveau` VALUES ('02', 'Moyenne section', '01');
INSERT INTO `niveau` VALUES ('03', 'Grande section', '01');
INSERT INTO `niveau` VALUES ('04', 'Cp', '02');
INSERT INTO `niveau` VALUES ('05', 'Ce1', '02');
INSERT INTO `niveau` VALUES ('06', 'Ce2', '02');
INSERT INTO `niveau` VALUES ('07', 'Cm1', '02');
INSERT INTO `niveau` VALUES ('08', 'Cm2', '02');
INSERT INTO `niveau` VALUES ('09', '6 eme', '03');
INSERT INTO `niveau` VALUES ('10', '5 eme', '03');
INSERT INTO `niveau` VALUES ('11', '4 eme', '03');
INSERT INTO `niveau` VALUES ('12', '3 eme', '03');
INSERT INTO `niveau` VALUES ('13', 'Seconde', '04');
INSERT INTO `niveau` VALUES ('14', 'Premiere', '04');
INSERT INTO `niveau` VALUES ('15', 'Terminal', '04');
INSERT INTO `niveau` VALUES ('16', 'Premiere', '05');
INSERT INTO `niveau` VALUES ('17', 'Terminal', '05');
INSERT INTO `niveau` VALUES ('18', '1ere année', '06');
INSERT INTO `niveau` VALUES ('19', '2eme année', '06');
INSERT INTO `niveau` VALUES ('20', '1ere année', '07');
INSERT INTO `niveau` VALUES ('21', '2eme année', '07');
--
-- Contenu de la table `filiere`
--
INSERT INTO `filiere` VALUES ('01', 'ES', '04');
INSERT INTO `filiere` VALUES ('02', 'S', '04');
INSERT INTO `filiere` VALUES ('03', 'L', '04');
INSERT INTO `filiere` VALUES ('04', 'SMS', '05');
INSERT INTO `filiere` VALUES ('05', 'STAE', '05');
INSERT INTO `filiere` VALUES ('06', 'STI', '05');
INSERT INTO `filiere` VALUES ('07', 'STL', '05');
INSERT INTO `filiere` VALUES ('08', 'STT', '05');
INSERT INTO `filiere` VALUES ('09', 'Hotelerie', '05');
INSERT INTO `filiere` VALUES ('10', 'Musique et Danse', '05');
INSERT INTO `filiere` VALUES ('11', 'CAP', '06');
INSERT INTO `filiere` VALUES ('12', 'BEP', '06');
INSERT INTO `filiere` VALUES ('13', 'Bac Pro', '06');
INSERT INTO `filiere` VALUES ('14', 'BTS', '07');
INSERT INTO `filiere` VALUES ('15', 'Prepa', '07');