Aller au contenu

liste dynamique en fonction d'une selection


genmin

Sujets conseillés

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";
// ----------------------------------------------------------------------------

?>

:wacko: Si quelqu'un peu me guider

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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. :)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...