genmin Posté 9 Février 2004 Posté 9 Février 2004 Je cherche à inserrer plusieur liste déroulante indépendante les une des autres mais qui s'alimente dans une base mysql en fonction d'une sélection dans une liste. Et le tout sans validation si possible.(donc avec du javascript je pense). j'ai déjà un menu qui s'alimente en fonction d'un autre mais il ne permets pas plusieur sélection. Voilà le javascript : <script LANGUAGE="JavaScript">function ModifierListe1(code_secteur) { lg = document.formu.zlsecteur1.length; // On vide la liste for (i = lg - 1; i >= 0; i--) { document.formu.zlsecteur1.options[i] = null; } idagence = document.formu.zlville2.selectedIndex;<?php// Génération des secteurs par villes$sql = "SELECT idagence,group_id FROM oempv3_groups ORDER BY idagence";$resultat = mysql_db_query($db, $sql);$max_lignes = 0;$option_max = '';while ($enr = mysql_fetch_array($resultat)) { $sql = "SELECT code, ville "; $sql .= "FROM ville "; $sql .= "WHERE agence='".$enr[0]."'"; $sql .= "ORDER BY ville"; $resultat2 = mysql_db_query($db, $sql); echo " if (document.formu.zlville2.options[idagence].value == \"".$enr[0]."\") {\n"; echo " document.formu.zlsecteur1.length = ".(mysql_num_rows($resultat2)+1).";\n"; $cpt = 1; while ($enr2 = mysql_fetch_array($resultat2)) { echo " document.formu.zlsecteur1.options[".$cpt."].value = ".$enr2[0].";\n"; echo " document.formu.zlsecteur1.options[".$cpt."].text = \"".$enr2[1]."\";\n"; echo " if (code_secteur == ".$enr2[0].") document.formu.zlsecteur1.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> <!-- Selection ville et secteur --> <script LANGUAGE="JavaScript">function ModifierListe2(code_secteur) { lg = document.formu.zlsecteur2.length; // On vide la liste for (i = lg - 1; i >= 0; i--) { document.formu.zlsecteur2.options[i] = null; } idagence = document.formu.zlville2.selectedIndex;<?php// Génération des secteurs par villes$sql = "SELECT idagence,group_id FROM oempv3_groups ORDER BY idagence";$resultat = mysql_db_query($db, $sql);$max_lignes = 0;$option_max = '';while ($enr = mysql_fetch_array($resultat)) { $sql = "SELECT code, ville "; $sql .= "FROM ville "; $sql .= "WHERE agence='".$enr[0]."'"; $sql .= "ORDER BY ville"; $resultat2 = mysql_db_query($db, $sql); echo " if (document.formu.zlville2.options[idagence].value == \"".$enr[0]."\") {\n"; echo " document.formu.zlsecteur2.length = ".(mysql_num_rows($resultat2)+1).";\n"; $cpt = 1; while ($enr2 = mysql_fetch_array($resultat2)) { echo " document.formu.zlsecteur2.options[".$cpt."].value = ".$enr2[0].";\n"; echo " document.formu.zlsecteur2.options[".$cpt."].text = \"".$enr2[1]."\";\n"; echo " if (code_secteur == ".$enr2[0].") document.formu.zlsecteur2.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> Et voilà le code php: <?php// ----------------------------------------------------------------------------// Liste villes// ----------------------------------------------------------------------------$sql = "SELECT idagence,group_id FROM oempv3_groups ORDER BY Idagence";$resultat = mysql_db_query($db, $sql);echo "<SELECT NAME='zlville2[]' onChange='ModifierListe1(-1), ModifierListe2(-1), ModifierListe3(-1), ModifierListe4(-1)' size='3' multiple>\n";while ($enr = mysql_fetch_array($resultat)) { echo "<OPTION VALUE='".$enr[0]."'"; if ($zlville2 == $enr[0]) echo " SELECTED"; echo ">".htmlspecialchars($enr[0])."</OPTION>\n";}echo "</SELECT> \n";?><?php// ----------------------------------------------------------------------------// Liste secteurs// ----------------------------------------------------------------------------echo "<SELECT NAME='zlsecteur1'>\n";for ($cpt = 0; $cpt < $max_lignes; $cpt++) echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";echo "</SELECT>\n";if (!isset($zlsecteur1)) $zlsecteur1 = -1;echo "<script LANGUAGE='JavaScript'>\n;ModifierListe1(".$zlsecteur1.");\n</SCRIPT>\n";// ----------------------------------------------------------------------------?><?php// ----------------------------------------------------------------------------// Liste secteurs// ----------------------------------------------------------------------------echo "<SELECT NAME='zlsecteur2'>\n";for ($cpt = 0; $cpt < $max_lignes; $cpt++) echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";echo "</SELECT>\n";if (!isset($zlsecteur2)) $zlsecteur2 = -1;echo "<script LANGUAGE='JavaScript'>\n;ModifierListe2(".$zlsecteur2.");\n</SCRIPT>\n";// ----------------------------------------------------------------------------?> Si quelqu'un peu me guider
Anonymus Posté 10 Février 2004 Posté 10 Février 2004 Si j'ai bien compris, ce n'est pas possible. Pourquoi ? Imagine, tu as le choix entre : -chien -chat -hamster -lapin Tu sélectionnes chien, chat. Comment le javascript peut il savoir que tu ne veux pas sélectionner un autre animal ? Comment saura t il que tu veux en sélectionner 2, et pas plus ? Tu dois obligatoirement mettre une validation, donc un bouton <submit>. Petit détail : la fonction mysql_db_query est obsolete. Elle marche encore pour des raisons de compatibilité, mais elle risque de ne plus marcher avec php5. Préfères lui la fonction mysql_query($query,$link). Anonymus.
genmin Posté 10 Février 2004 Auteur Posté 10 Février 2004 Merci pour cette petite remarque pour la fonction "mysql_db_query". Pour ce qui est de la validation, c'est pas grave si il faut y passer tant pis. Es ce que tu pourrais me guider pour les modifs du script. Merci à toi anonymus.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant