Bonjour,
Voilà ça fait un long moment que je cherche a créer des listes déroulantes liée entre elle. J'ai réussi à en lier 2 mais je n'arrive absolument pas à en lier 3 ou plus entre elle pourtant en m'inspirant des différent exemples que j'ai trouvé sur les forums.
Je vous fournis un exemple de base sur les listes que je dois lier ainsi que ce que j’ai fait en PHP avec ce que j’obtiens avec les problèmes.
Année--->Semestre--->Semaine
2012---->1----------->10
2011---->2----------->39
Creation de la base
liste.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 -- -- Base de données: `test_liste` -- DELIMITER $$ -- -- Fonctions -- CREATE DEFINER=`root`@`localhost` FUNCTION `semestre`(Dates Date) RETURNS tinyint(4) DETERMINISTIC BEGIN RETURN CEILING(MONTH(Dates)/6); END$$ DELIMITER ; -- -------------------------------------------------------- -- -- Structure de la table `mesures` -- CREATE TABLE IF NOT EXISTS `mesures` ( `ID_MESURE` int(11) NOT NULL AUTO_INCREMENT, `Date` date DEFAULT NULL, PRIMARY KEY (`ID_MESURE`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=9 ; -- -- Contenu de la table `mesures` -- INSERT INTO `mesures` (`ID_MESURE`, `Date`) VALUES (1, '2012-03-12'), (2, '2012-03-12'), (3, '2012-05-22'), (4, '2012-05-22'), (5, '2012-10-18'), (6, '2012-10-18'), (7, '2011-03-12'), (8, '2010-03-12');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 <?php // Variables de connexion $serveur = "localhost"; $admin = "root"; $mdp = ""; $base = "test_liste"; $idAnnee = isset($_POST['annee'])?$_POST['annee']:null; $idSemestre = isset($_POST['semestre'])?$_POST['semestre']:null; $idSemaine = isset($_POST['semaine'])?$_POST['semaine']:null; // Affiche le resultat si les listes sont completées et que le bouton a été cliqué if(isset($_POST['ok']) && isset($_POST['semaine']) && $_POST['semaine'] != "") { $annee_selectionne = $_POST['annee']; $semestre_selectionne = $_POST['semestre']; $semaine_selectionne = $_POST['semaine']; echo ("Vous avez sélectionné l'année $annee_selectionne et le semestre $semestre_selectionne et la semaine n°$semaine_selectionne"); } $connexion = mysql_pconnect($serveur, $admin, $mdp); if($connexion != false) { $choixbase = mysql_select_db($base, $connexion); ?> choisir une année <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_annee"> <select name="annee" id="annee" onchange="document.forms['chg_annee'].submit();"> <option>- - - Choisissez une année - - -</option> <?php $sql1 = "SELECT DISTINCT YEAR(`date`) AS annee1 FROM `mesures` ORDER BY annee1 DESC;"; $rech_annee = mysql_query($sql1); // Creation d'un tableau permettant de stocker les valeurs de la requete sql1 $Tannee = array(); // Initialisation d'un compteur pour les années $nb_annee = 0; if($rech_annee != false) { while($ligneAnnee = mysql_fetch_assoc($rech_annee)) { array_push($Tannee, $ligneAnnee['annee1']); $nb_annee++; for($i = 0; $i < $nb_annee; $i++) { echo("<option value=\"$Tannee[$i]\"".((isset($idAnnee) && $idAnnee == $Tannee[$i])?" selected":null).">$Tannee[$i] </option>"); } } } mysql_free_result($rech_annee); ?> </select> </form> choisir un semestre <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_semestre"> <select name="semestre" id="semestre" onchange="document.forms['chg_semestre'].submit();"> <option>- - - Choisissez un semestre - - -</option> <?php if(isset($idAnnee) && $idAnnee != -1) { $sql2 = "SELECT DISTINCT semestre(date) AS semestre1 FROM mesures;"; $rech_semestre = mysql_query($sql2); // Creation d'un tableau permettant de stocker les valeurs de la requete sql2 $Tsemestre = array(); // Initialisation d'un compteur pour les semestres $nb_semestre = 0; if($rech_semestre != false) { while($ligneSemestre = mysql_fetch_assoc($rech_semestre)) { array_push($Tsemestre, $ligneSemestre['semestre1']); $nb_semestre++; for($j = 0; $j<$nb_semestre; $j++) { echo("<option value=\"$Tsemestre[$j]\"".((isset($idSemestre) && $idSemestre == $Tsemestre[$j])?" selected":null).">$Tsemestre[$j]</option>"); } } } mysql_free_result($rech_semestre); } ?> </select> </form> choisir une semaine <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chg_semaine"> <select name="semaine" id="semaine" onchange="document.forms['chg_semaine'].submit();"> <option>- - - Choisissez une semaine - - -</option> <?php if( (isset($idAnnee) && $idAnnee != -1) && (isset($idSemestre) && $idSemestre != -1) ) { $sql3 = "SELECT DISTINCT WEEK(`date`) AS semaine1 FROM `mesures`"; $rech_semaine = mysql_query($sql3); // Creation d'un tableau permettant de stocker les valeurs de la requete sql3 $Tsemaine = array(); // Initialisation d'un compteur pour les semaines $nb_semaine = 0; if($rech_semaine != false) { while($ligneSemaine = mysql_fetch_assoc($rech_semaine)) { array_push($Tsemaine, $ligneSemaine['semaine1']); $nb_semaine++; for($k = 0; $k<$nb_semaine; $k++) { echo("<option value=\"$Tsemaine[$k]\"".((isset($idSemaine) && $idSemaine == $Tsemaine[$k])?" selected":null).">$Tsemaine[$k]</option>"); } } } mysql_free_result($rech_semaine); } ?> </select> </form> <input type="submit" name="ok" id="ok" value="Envoyer" /> <?php mysql_close($connexion); } ?>
Partager