Bonjour,
Un énième poste sur les select.
Je dois modifier une site :
Avant on choisissait des salles en fonction d'un site. Je dois faire en sorte maintenant qu'on doit choisir une ville qui va déterminer un site puis enfin choisir le site.
Alors certes je connais et sais faire avec le rechargement de la page sans problème. Mais graphiquement la position de mon <select> m'empèche d'utiliser cette solution de manière propre, car l'utilisateur rentre des informations avant.
j'ai modifier une fonction javascript pour obtenir la génération dynamique des deux premier select :
Avec ceci j'obtiens bien la dynamique souhaité entre le choix des villes et des sites, le code 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
42
43
44
45
46
47
48
49
50
51
52
53
54 <SCRIPT LANGUAGE="JavaScript"> function ModifierListe(code_item) { lg = document.nom_formulaire.id_area.length; // On vide la liste for (i = lg - 1; i >= 0; i--) { document.nom_formulaire.id_area.options[i] = null; } code_rub = document.nom_formulaire.id_city.selectedIndex; <?php // Génération des Items par Rubriques // Cas où aucun domaine n'a été précisé echo " if (document.nom_formulaire.id_city.options[code_rub].value == -1) {\n"; echo " document.nom_formulaire.id_area.length = 1;\n"; echo " document.nom_formulaire.id_area.options[0].value = -1;\n"; echo " document.nom_formulaire.id_area.options[0].text = \"------\";\n"; echo " if (code_item == -1) document.nom_formulaire.id_area.options[0].selected = true;\n"; echo " }\n"; // Cas où un domaine a été précisé $sql = "SELECT id FROM city ORDER BY c_name"; $resultat = sql_query($sql); $max_lignes = 0; $option_max = ''; for ($enr = 0; ($row = sql_row($resultat, $enr)); $enr++) { $sql = "SELECT id, a_name, id_a "; $sql .= "FROM site "; $sql .= "WHERE id='".$row[0]."'"; $sql .= "ORDER BY a_name"; $resultat2 = sql_query($sql); echo " if (document.nom_formulaire.id_city.options[code_rub].value == ".$row[0].") {\n"; echo " document.nom_formulaire.id_area.length = ".(sql_count($resultat2)+1).";\n"; $cpt = 0; echo " document.nom_formulaire.id_area.options[0].value = -1;\n"; echo " document.nom_formulaire.id_area.options[0].text = \"".$vocab["default_room_all"]."\";\n"; echo " if (code_item == -1) document.nom_formulaire.id_area.options[0].selected = true;\n"; $cpt++; for ($enr2 = 0; ($row2 = sql_row($resultat2, $enr2)); $enr2++) { echo " document.nom_formulaire.id_area.options[".$cpt."].value = ".$row2[0].";\n"; echo " document.nom_formulaire.id_area.options[".$cpt."].text = \"".$row2[1]." ".$vocab["display_week"]."\";\n"; echo " if (code_item == ".$row2[0].") document.nom_formulaire.id_area.options[".$cpt."].selected = true;\n"; $cpt++; if ($cpt > $max_lignes) $max_lignes = $cpt; if (strlen($row2[1]) > strlen($option_max)) $option_max = $row2[1]; } echo " }\n"; } ?> }
Donc voilà mon problème actuel est que je n'arrive pas à rajouter le code nécessaire pour générer les salles en fonction des sites.
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 <?php #Liste des domaines $sql = "SELECT id, c_name FROM city ORDER BY c_name"; $resultat = sql_query($sql); ?> <table><tr><td> <?php echo "<h4>".$vocab["explain_default_area_and_room"]."</h4>"; echo "<table ><tr><td>Ville </td><td>"; echo "<SELECT NAME='id_city' onChange='ModifierListe(-1)'>\n"; echo "<OPTION VALUE='-1'>Choisissez une ville</OPTION>\n"; for ($enr = 0; ($row = sql_row($resultat, $enr)); $enr++) { echo "<OPTION VALUE='".$row[0]."'"; if ($default_c == $row[0]) echo " SELECTED"; echo ">".htmlspecialchars($row[1]); echo "</OPTION>\n"; } echo "</SELECT></td></tr>\n"; #Liste des ressources echo "<tr><td>Site par défault</td><td>"; echo "<SELECT NAME='id_area'>\n"; for ($cpt = 0; $cpt < $max_lignes; $cpt++) echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n"; echo "</SELECT></td></tr>\n"; echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$id_area.");\n</SCRIPT>\n";
J'ai essayé de rajouter une boucle for dans la fonction javascript :
Mais voilà ca me génère des salles mais tout en gardant afficher dans le select les salles afficher par un autre choix.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $sql = "SELECT id, r_name, id_a "; $sql2 .= "FROM salle "; $sql2 .= "WHERE id_a='".$row2[0]."'"; $sql2 .= "ORDER BY r_name"; $resultat3 = sql_query($sql2); for ($enr3 = 0; ($row3 = sql_row($resultat3, $enr3)); $enr3++) { echo " document.nom_formulaire.id_room.options[".$cpt."].value = ".$row3[0].";\n"; echo " document.nom_formulaire.id_room.options[".$cpt."].text = \"".$row3[1]." ".$vocab["display_week"]."\";\n"; echo " if (code_item == ".$row3[0].") document.nom_formulaire.id_room.options[".$cpt."].selected = true;\n"; $cpt++; }
Si quelqu'un aurai des petits indices, pistes, aide ou quoi que ce soit ça serai gentil. Merci d'avoir lu c'est déjà ça : >
Partager