Bonjour à tous,
Je suis confronté un un problème assez courant me semble t il mais je ne trouve pas de solution me convenant.
Dans un formulaire Php, je souhaite intégré deux listes provenant de ma BDD.
Le choix de la première liste définissant les choix possible de la seconde:
Exemple:
Liste 1: PAYS Liste 2: Ville.
Je crois que ceci ne peut être réaliser directement par PHP, mais qu'il faille passer par du javascript.
J'ai trouver alors ce code:
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 <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"); $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)) { $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 // ---------------------------------------------------------------------------- $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]; } ?>
Mon problème est qu'il faut cliquer sur un bouton de validation..?
Et je préférerais qu'il n'y ait pas besoin, mais dans ce cas comment puis je récupérer, la valeur de mes listes?
Merci d'avance, à ceux qui essayeront de m'aider.
Bye
Partager