Lier 2 listes déroulantes en php
floflo30
-
marmoule -
marmoule -
Je viens de mettre en place le code suivant
Je veux qu'en fonction de la rubrique choisie s'affiche mes établissement, probléme ma liste établissement reste vide est apparait des ---- dedans.
<?php include("_connex.php"); ?> <SCRIPT LANGUAGE="JavaScript"> function ModifierListe(code_item) { lg = document.form1.zlEtab.length; // On vide la liste for (i = lg - 1; i >= 0; i--) { document.form1.zlEtab.options[i] = null; } code_rub = document.form1.zlRubrique.selectedIndex; <?php $sql = "SELECT NTYPE FROM TYPE"; $resultat=mysql_query($sql); $max_lignes = 0; $option_max = ''; while ($enr = mysql_fetch_array($resultat)) { $sql = "SELECT NETAB, NOMETAB "; $sql .= "FROM ETABLISSEMENT "; $sql .= "WHERE NTYPE='".$enr[0]."'"; $sql .= "ORDER BY NETAB"; echo $sql; $resultat2 = mysql_query($sql); echo " if (document.form1.zlRubrique.options[code_rub].value == ".$enr[0].") {\n"; echo " document.form1.zlEtab.length = ".(mysql_num_rows($resultat2)).";\n"; $cpt = 0; while ($enr2 = mysql_fetch_array($resultat2)) { echo " document.form1.zlEtab.options[".$cpt."].value = ".$enr2[0].";\n"; echo " document.form1.zlEtab.options[".$cpt."].text = \"".$enr2[1]."\";\n"; echo " if (code_item == ".$enr2[0].") document.form1.zlEtab.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 Rubriques // ---------------------------------------------------------------------------- $sql = "SELECT * FROM TYPE;"; $resultat=mysql_query($sql); echo "<FORM METHOD=POST NAME='form1'>"; echo "<BR> <B>Rubriques</B> "; echo " <SELECT NAME='zlRubrique' onChange='ModifierListe(-1)'>\n"; if (!isset($zlRubrique)) $zlRubrique = - 1; while ($enr = mysql_fetch_array($resultat)) { echo "<OPTION VALUE='".$enr[0]."'"; if ($zlRubrique == $enr[0]) echo " SELECTED"; echo ">".htmlspecialchars($enr[1])."</OPTION>\n"; } echo "</SELECT> \n"; echo "<br> <B>Etablissement</B> "; echo " <SELECT NAME='zlEtab'>\n"; for ($cpt = 0; $cpt < $max_lignes; $cpt++) echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n"; echo "</SELECT> \n"; if (!isset($zlEtab)) $zlEtab = -1; echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlEtab.");\n</SCRIPT>\n"; echo "<INPUT TYPE='submit' VALUE='Valider'>\n"; echo "</FORM>"; echo "Sélection :<BR>\n"; if (isset($zlRubrique) && $zlRubrique != "") { $sql = "SELECT * FROM TYPE WHERE code='".$zlRubrique."'"; $resultat=mysql_query($sql); $enr = @mysql_fetch_array($resultat); echo "Rubrique = $zlRubrique [$enr[0]]<BR>\n"; echo "Rubrique = $zlRubrique [$enr[1]]<BR>\n"; } if (isset($zlEtab) && $zlEtab != "" && $zlEtab != -1) { $sql = "SELECT NOMETAB FROM ETABLISSEMENT WHERE code='".$zlEtab."'"; $resultat=mysql_query($sql); $enr = @mysql_fetch_array($resultat); echo "Item = $zlEtab [$enr[0]]<BR>\n"; } ?> </html>
Je veux qu'en fonction de la rubrique choisie s'affiche mes établissement, probléme ma liste établissement reste vide est apparait des ---- dedans.
A voir également:
- Lier 2 listes déroulantes en php
- Supercopier 2 - Télécharger - Gestion de fichiers
- Liste déroulante en cascade - Guide
- Listes déroulantes excel - Guide
- 2 ecran pc - Guide
- Expert php pinterest - Télécharger - Langages
4 réponses
salut..
c'est un peu le bordel ton code non ?
désolé mais je ne capte pas pourquoi t'as pas fé plus simple..
et puis ca manque un peu d'explication...
désolé
c'est un peu le bordel ton code non ?
désolé mais je ne capte pas pourquoi t'as pas fé plus simple..
et puis ca manque un peu d'explication...
désolé
Slt Floflo30,
Ton code a l'air correcte. ;-)
A priori le pb peut provenir de :
1 - Le champ NTYPE n'est pas le 1er champ de ta table TYPE (mais je pense que si ...)
2 - Le champ NTYPE comporte des lettres (mais là je ne fais que supposer ...)
A tout hasard remplace :
par :
En encadrant chaque valeur de $enr[0] avec des apostrophes.
Sinon bah j'ai pas trop d'idée pour l'instant ...
Eventuellement poste le code de ta page mais uniquement le code HTML (après traitement par le préprocesseur PHP)
@+
PhP [Push the button,Don't push the
. button,Trip the station,Change the channel]
Ton code a l'air correcte. ;-)
A priori le pb peut provenir de :
1 - Le champ NTYPE n'est pas le 1er champ de ta table TYPE (mais je pense que si ...)
2 - Le champ NTYPE comporte des lettres (mais là je ne fais que supposer ...)
A tout hasard remplace :
echo " if (document.form1.zlRubrique.options[code_rub].value == ".$enr[0].") {\n";
par :
echo " if (document.form1.zlRubrique.options[code_rub].value == '".$enr[0]."') {\n";
En encadrant chaque valeur de $enr[0] avec des apostrophes.
Sinon bah j'ai pas trop d'idée pour l'instant ...
Eventuellement poste le code de ta page mais uniquement le code HTML (après traitement par le préprocesseur PHP)
@+
PhP [Push the button,Don't push the
. button,Trip the station,Change the channel]
NTYPE est du numérique
Voila l'éxécution:
function ModifierListe(code_item) {
lg = document.form1.zlEtab.length;
// On vide la liste
for (i = lg - 1; i >= 0; i--) {
document.form1.zlEtab.options[i] = null;
}
code_rub = document.form1.zlRubrique.selectedIndex;
if (document.form1.zlRubrique.options[code_rub].value == 1) {
document.form1.zlEtab.length = 11;
document.form1.zlEtab.options[0].value = 1;
document.form1.zlEtab.options[0].text = "Le Beau Rivage";
if (code_item == 1) document.form1.zlEtab.options[0].selected = true;
document.form1.zlEtab.options[1].value = 2;
document.form1.zlEtab.options[1].text = "Camping La Forêt";
if (code_item == 2) document.form1.zlEtab.options[1].selected = true;
document.form1.zlEtab.options[2].value = 4;
document.form1.zlEtab.options[2].text = "La Croix Clémentine";
if (code_item == 4) document.form1.zlEtab.options[2].selected = true;
document.form1.zlEtab.options[3].value = 5;
document.form1.zlEtab.options[3].text = "Domaine des Fumades";
}
if (document.form1.zlRubrique.options[code_rub].value == 2) {
document.form1.zlEtab.length = 29;
document.form1.zlEtab.options[0].value = 3;
document.form1.zlEtab.options[0].text = "HÔTEL RESTAURANT LE RICHE";
if (code_item == 3) document.form1.zlEtab.options[0].selected = true;
document.form1.zlEtab.options[1].value = 10;
document.form1.zlEtab.options[1].text = "HÔTEL RESTAURANT LA DRAILLE";
if (code_item == 10) document.form1.zlEtab.options[1].selected = true;
document.form1.zlEtab.options[2].value = 11;
document.form1.zlEtab.options[2].text = "HÔTEL ORLY";
if (code_item == 11) document.form1.zlEtab.options[2].selected = true;
document.form1.zlEtab.options[3].value = 12;
document.form1.zlEtab.options[3].text = "HÔTEL RESTAURANT LE CEVENOL";
if (code_item == 12) document.form1.zlEtab.options[3].selected = true;
document.form1.zlEtab.options[4].value = 13;
document.form1.zlEtab.options[4].text = "HÔTEL LA PORTE DES CEVENNES";
if (code_item == 13) document.form1.zlEtab.options[4].selected = true;
document.form1.zlEtab.options[5].value = 14;
document.form1.zlEtab.options[5].text = "HÔTEL ERMITAGE MEISSONNIER";
if (code_item == 14) document.form1.zlEtab.options[5].selected = true;
document.form1.zlEtab.options[6].value = 15;
document.form1.zlEtab.options[6].text = "HÔTEL LE MAS DU TERME";
if (code_item == 15) document.form1.zlEtab.options[6].selected = true;
document.form1.zlEtab.options[7].value = 26;
document.form1.zlEtab.options[7].text = "HOSTELLERIE LE CASTELLAS";
if (code_item == 26) document.form1.zlEtab.options[7].selected = true;
document.form1.zlEtab.options[8].value = 28;
document.form1.zlEtab.options[8].text = "Motel Le Marguerittes";
if (code_item == 28) document.form1.zlEtab.options[8].selected = true;
document.form1.zlEtab.options[9].value = 29;
document.form1.zlEtab.options[9].text = "Nimotel";
if (code_item == 29) document.form1.zlEtab.options[9].selected = true;
document.form1.zlEtab.options[10].value = 30;
document.form1.zlEtab.options[10].text = "Novotel";
if (code_item == 30) document.form1.zlEtab.options[10].selected = true;
document.form1.zlEtab.options[11].value = 31;
document.form1.zlEtab.options[11].text = "Oustau Camarguen";
if (code_item == 31) document.form1.zlEtab.options[11].selected = true;
document.form1.zlEtab.options[12].value = 32;
document.form1.zlEtab.options[12].text = "Résidence Ulysse";
if (code_item == 32) document.form1.zlEtab.options[12].selected = true;
document.form1.zlEtab.options[13].value = 33;
document.form1.zlEtab.options[13].text = "Résitel";
if (code_item == 33) document.form1.zlEtab.options[13].selected = true;
document.form1.zlEtab.options[14].value = 34;
document.form1.zlEtab.options[14].text = "Magnanerie de Bernas";
if (code_item == 34) document.form1.zlEtab.options[14].selected = true;
document.form1.zlEtab.options[15].value = 35;
document.form1.zlEtab.options[15].text = "Stevenson Tavern";
if (code_item == 35) document.form1.zlEtab.options[15].selected = true;
document.form1.zlEtab.options[16].value = 36;
document.form1.zlEtab.options[16].text = "Vieux Castillon";
if (code_item == 36) document.form1.zlEtab.options[16].selected = true;
document.form1.zlEtab.options[17].value = 37;
document.form1.zlEtab.options[17].text = "Acanthe du Temple Hôtel";
}
}
</SCRIPT>
<FORM METHOD=POST NAME='form1'><BR> <B>Rubriques</B> <SELECT NAME='zlRubrique' onChange='ModifierListe(-1)'>
<OPTION VALUE='1'>Campings</OPTION>
<OPTION VALUE='2'>Hôtels</OPTION>
<OPTION VALUE='3'>Gîtes</OPTION>
<OPTION VALUE='4'>Chambres d'hôtes</OPTION>
<OPTION VALUE='5'>Activités touristiques</OPTION>
<OPTION VALUE='6'>Immobilier</OPTION>
<OPTION VALUE='7'>Entreprises Commerciales</OPTION>
<OPTION VALUE='8'>Entreprises Artisanales</OPTION>
<OPTION VALUE='9'>Entreprises Industrielles</OPTION>
<OPTION VALUE='10'>Associations</OPTION>
</SELECT>
<br> <B>Etablissement</B> <SELECT NAME='zlEtab'>
<OPTION>------------------------------------------------------------</OPTION>
<OPTION>------------------------------------------------------------</OPTION>
<OPTION>------------------------------------------------------------</OPTION>
<OPTION>------------------------------------------------------------</OPTION>
<OPTION>------------------------------------------------------------</OPTION>
</SELECT>
<SCRIPT LANGUAGE='JavaScript'>
;ModifierListe(-1);
</SCRIPT>
<INPUT TYPE='submit' VALUE='Valider'>
</FORM>Sélection :<BR>
Rubrique = -1 []<BR>
Rubrique = -1 []<BR>
</html>
Voila l'éxécution:
function ModifierListe(code_item) {
lg = document.form1.zlEtab.length;
// On vide la liste
for (i = lg - 1; i >= 0; i--) {
document.form1.zlEtab.options[i] = null;
}
code_rub = document.form1.zlRubrique.selectedIndex;
if (document.form1.zlRubrique.options[code_rub].value == 1) {
document.form1.zlEtab.length = 11;
document.form1.zlEtab.options[0].value = 1;
document.form1.zlEtab.options[0].text = "Le Beau Rivage";
if (code_item == 1) document.form1.zlEtab.options[0].selected = true;
document.form1.zlEtab.options[1].value = 2;
document.form1.zlEtab.options[1].text = "Camping La Forêt";
if (code_item == 2) document.form1.zlEtab.options[1].selected = true;
document.form1.zlEtab.options[2].value = 4;
document.form1.zlEtab.options[2].text = "La Croix Clémentine";
if (code_item == 4) document.form1.zlEtab.options[2].selected = true;
document.form1.zlEtab.options[3].value = 5;
document.form1.zlEtab.options[3].text = "Domaine des Fumades";
}
if (document.form1.zlRubrique.options[code_rub].value == 2) {
document.form1.zlEtab.length = 29;
document.form1.zlEtab.options[0].value = 3;
document.form1.zlEtab.options[0].text = "HÔTEL RESTAURANT LE RICHE";
if (code_item == 3) document.form1.zlEtab.options[0].selected = true;
document.form1.zlEtab.options[1].value = 10;
document.form1.zlEtab.options[1].text = "HÔTEL RESTAURANT LA DRAILLE";
if (code_item == 10) document.form1.zlEtab.options[1].selected = true;
document.form1.zlEtab.options[2].value = 11;
document.form1.zlEtab.options[2].text = "HÔTEL ORLY";
if (code_item == 11) document.form1.zlEtab.options[2].selected = true;
document.form1.zlEtab.options[3].value = 12;
document.form1.zlEtab.options[3].text = "HÔTEL RESTAURANT LE CEVENOL";
if (code_item == 12) document.form1.zlEtab.options[3].selected = true;
document.form1.zlEtab.options[4].value = 13;
document.form1.zlEtab.options[4].text = "HÔTEL LA PORTE DES CEVENNES";
if (code_item == 13) document.form1.zlEtab.options[4].selected = true;
document.form1.zlEtab.options[5].value = 14;
document.form1.zlEtab.options[5].text = "HÔTEL ERMITAGE MEISSONNIER";
if (code_item == 14) document.form1.zlEtab.options[5].selected = true;
document.form1.zlEtab.options[6].value = 15;
document.form1.zlEtab.options[6].text = "HÔTEL LE MAS DU TERME";
if (code_item == 15) document.form1.zlEtab.options[6].selected = true;
document.form1.zlEtab.options[7].value = 26;
document.form1.zlEtab.options[7].text = "HOSTELLERIE LE CASTELLAS";
if (code_item == 26) document.form1.zlEtab.options[7].selected = true;
document.form1.zlEtab.options[8].value = 28;
document.form1.zlEtab.options[8].text = "Motel Le Marguerittes";
if (code_item == 28) document.form1.zlEtab.options[8].selected = true;
document.form1.zlEtab.options[9].value = 29;
document.form1.zlEtab.options[9].text = "Nimotel";
if (code_item == 29) document.form1.zlEtab.options[9].selected = true;
document.form1.zlEtab.options[10].value = 30;
document.form1.zlEtab.options[10].text = "Novotel";
if (code_item == 30) document.form1.zlEtab.options[10].selected = true;
document.form1.zlEtab.options[11].value = 31;
document.form1.zlEtab.options[11].text = "Oustau Camarguen";
if (code_item == 31) document.form1.zlEtab.options[11].selected = true;
document.form1.zlEtab.options[12].value = 32;
document.form1.zlEtab.options[12].text = "Résidence Ulysse";
if (code_item == 32) document.form1.zlEtab.options[12].selected = true;
document.form1.zlEtab.options[13].value = 33;
document.form1.zlEtab.options[13].text = "Résitel";
if (code_item == 33) document.form1.zlEtab.options[13].selected = true;
document.form1.zlEtab.options[14].value = 34;
document.form1.zlEtab.options[14].text = "Magnanerie de Bernas";
if (code_item == 34) document.form1.zlEtab.options[14].selected = true;
document.form1.zlEtab.options[15].value = 35;
document.form1.zlEtab.options[15].text = "Stevenson Tavern";
if (code_item == 35) document.form1.zlEtab.options[15].selected = true;
document.form1.zlEtab.options[16].value = 36;
document.form1.zlEtab.options[16].text = "Vieux Castillon";
if (code_item == 36) document.form1.zlEtab.options[16].selected = true;
document.form1.zlEtab.options[17].value = 37;
document.form1.zlEtab.options[17].text = "Acanthe du Temple Hôtel";
}
}
</SCRIPT>
<FORM METHOD=POST NAME='form1'><BR> <B>Rubriques</B> <SELECT NAME='zlRubrique' onChange='ModifierListe(-1)'>
<OPTION VALUE='1'>Campings</OPTION>
<OPTION VALUE='2'>Hôtels</OPTION>
<OPTION VALUE='3'>Gîtes</OPTION>
<OPTION VALUE='4'>Chambres d'hôtes</OPTION>
<OPTION VALUE='5'>Activités touristiques</OPTION>
<OPTION VALUE='6'>Immobilier</OPTION>
<OPTION VALUE='7'>Entreprises Commerciales</OPTION>
<OPTION VALUE='8'>Entreprises Artisanales</OPTION>
<OPTION VALUE='9'>Entreprises Industrielles</OPTION>
<OPTION VALUE='10'>Associations</OPTION>
</SELECT>
<br> <B>Etablissement</B> <SELECT NAME='zlEtab'>
<OPTION>------------------------------------------------------------</OPTION>
<OPTION>------------------------------------------------------------</OPTION>
<OPTION>------------------------------------------------------------</OPTION>
<OPTION>------------------------------------------------------------</OPTION>
<OPTION>------------------------------------------------------------</OPTION>
</SELECT>
<SCRIPT LANGUAGE='JavaScript'>
;ModifierListe(-1);
</SCRIPT>
<INPUT TYPE='submit' VALUE='Valider'>
</FORM>Sélection :<BR>
Rubrique = -1 []<BR>
Rubrique = -1 []<BR>
</html>
Je vais essayer de t'aider mais je n'ai pas eu le courage de lire ton code ... dslé
Je te conseille de faire une iframe qui pointera vers une page avec ta 2è liste déroulante.
Ainsi lorsque tu fera ton choix dans la 1ère liste déroulante tu auras en paramètres cachés (<input type=hidden name=a value=$a).
Ensuite tu exécutes ta requête dans la iframe avec le paramètre cachés et l'affichage de ta 2è liste déroulante peut se faire corretement !
enfin je sais pas si c'est trés clair ....
Je te conseille de faire une iframe qui pointera vers une page avec ta 2è liste déroulante.
Ainsi lorsque tu fera ton choix dans la 1ère liste déroulante tu auras en paramètres cachés (<input type=hidden name=a value=$a).
Ensuite tu exécutes ta requête dans la iframe avec le paramètre cachés et l'affichage de ta 2è liste déroulante peut se faire corretement !
enfin je sais pas si c'est trés clair ....
J' ai 2 listes déroulantes, je veux qu'à partir d'une sélection effectuée dans une liste s'affiche dans mon autre les données en relation avec le premier choix effectué.
tchao
@++