Amis pros, bonjour.
J'ai besoin, comme beaucoup de monde, de faire 2 listes liées, de manière à ce que la seconde liste affiche des valeurs en fonction de ce qui est sélectionné dans la première.
J'ai sincèrement beaucoup cherché sur le net des codes qui pourraient m'aider.
J'ai bien trouvé un code qui se rapproche de ce que je veux faire mais le soucis est que j'ai un peu de mal à l'adapter à mes besoins.
Pour répondre à mon problème, j'aimerais que vous puissiez me donner une réponse à quelques questions.
Je vous présente le code que j'ai trouvé (pour info, ici lorsque l'on choisir un pays, la liste des villes correspondantes s'affiche):
Ma première question, qui sera peut-être la clé de mes réponses est: quelle est l'utilité précise de chacune des requêtes?
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 <html> <SCRIPT LANGUAGE="JavaScript"> function ModifierListe(code_ville) { lg = document.MonFormulaire.ListeVille.length; // ON VIDE LA LISTE DES VILLES for (i = lg - 1; i >= 0; i--) { document.MonFormulaire.ListeVille.options[i] = null; } code_pays = document.MonFormulaire.ListePays.selectedIndex; <?php // CONNEXION A LA BASE DE DONNEES $id_connexion = mysql_connect("localhost","root",""); mysql_select_db("exercice") or die("Could not select database"); // // // Là, je ne vois pas à quoi elle sert... $sql = "SELECT code FROM demo_pays ORDER BY code"; $resultat = mysql_query($sql) or die("Query failed"); // Génération des Villes par Pays $max_lignes = 0; $option_max = ''; while ($enr = mysql_fetch_array($resultat)) { // // // Je ne comprends pas non plus... $sql = "SELECT code, ville FROM demo_ville WHERE code_pays=$enr[0] ORDER BY ville"; $resultat2 = mysql_query($sql) or die("Query failed"); echo " if (document.MonFormulaire.ListePays.options[code_pays].value == ".$enr[0].") {\n"; echo " document.MonFormulaire.ListeVille.length = ".(mysql_num_rows($resultat2)).";\n"; $cpt = 0; while ($enr2 = mysql_fetch_array($resultat2)) { echo " document.MonFormulaire.ListeVille.options[".$cpt."].value = ".$enr2[0].";\n"; echo " document.MonFormulaire.ListeVille.options[".$cpt."].text = \"".$enr2[1]."\";\n"; echo " if (code_ville== ".$enr2[0].") document.MonFormulaire.ListeVille.options[".$cpt."].selected = true;\n"; $cpt++; if ($cpt > $max_lignes) $max_lignes = $cpt; if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1]; } echo " }\n"; } ?> } </SCRIPT> <?php // ---------------------------------------------------------------------------- // LISTE DES PAYS // ---------------------------------------------------------------------------- // // // Permet de lister les pays $sql = "SELECT code, pays FROM demo_pays ORDER BY pays"; $resultat = mysql_query($sql) or die("Query failed"); echo "<FORM METHOD=POST NAME='MonFormulaire' action='".$_SERVER['PHP_SELF']."' >"; echo "<BR> PAYS : "; echo " <SELECT NAME='ListePays' onChange='ModifierListe(-1)'>\n"; if (!isset($ListePays)) $ListePays = - 1; while ($enr = mysql_fetch_array($resultat)) { echo "<OPTION VALUE='".$enr[0]."'"; if ($ListePays == $enr[0]) echo " SELECTED"; echo ">".htmlspecialchars($enr[1])."</OPTION>\n"; } echo "</SELECT> \n"; // ---------------------------------------------------------------------------- // LISTE DES VILLES // ---------------------------------------------------------------------------- echo " VILLE : "; echo " <SELECT NAME='ListeVille'>\n"; for ($cpt = 0; $cpt < $max_lignes; $cpt++) echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n"; echo "</SELECT> \n"; if (!isset($ListeVille)) $ListeVille = -1; echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$ListeVille.");\n</SCRIPT>\n"; // ---------------------------------------------------------------------------- echo "<br><br>"; echo "<INPUT TYPE='submit' VALUE='Valider'>\n"; echo "</FORM>"; echo "<br><br>"; // ---------------------------------------------------------------------------- // Résultats des sélections // ---------------------------------------------------------------------------- if (isset($_POST['ListePays']) && $_POST['ListePays'] != "") { $sql = "SELECT pays FROM demo_pays WHERE code='".$_POST['ListePays']."'"; $resultat = mysql_query($sql) or die("Query failed"); $enr = @mysql_fetch_array($resultat); echo $enr[0]; echo "<br />"; } if (isset($_POST['ListeVille']) && $_POST['ListeVille'] != "") { $sql = "SELECT ville FROM demo_ville WHERE code='".$_POST['ListeVille']."'"; $resultat = mysql_query($sql) or die("Query failed"); $enr = @mysql_fetch_array($resultat); echo $enr[0]; } ?> <body> </body> </html>
Je ne comprends pas l'utilité des certaines requêtes. En effet, parfois on sélectionne les id dans le select alors qu'ils n'apparaissent jamais à l'écran. J'imagine qu'ils doivent servir pour transmettre les ID dans les requêtes suivantes mais j'avoue que je ne vois pas comment, je suis paumé.
Si vous pouviez me donner un coup de main pour comprendre le code, ça serait avec grand plaisir! Je suis disponible pour vous répondre très rapidement pendant les journées (8h-16h minimum quoi ).
Merci à tous!
David
Edit: j'en profite, tant que personne n'a répondu, pour préciser encore un peu plus le sujet.
Il y a un bouton Submit dans le formulaire qui permet d'afficher le choix de l'utilisateur, il y a donc une requete qui lui retourne ce qu'il doit afficher, j'en suis bien conscient. Clairement, c'est bien ce que je veux, sauf que je veux qu'il me retourne uniquement l'ID. Promis, je cherche en même temps...
Partager