HELP !! générer une liste déroulante a partir d une autre liste deroulante

gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 19 mars 2006 à 15:24
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 20 mars 2006 à 19:25
bonjour, j ai besoin d aide je ve faire des listes deroulantes dynamiques et le plus simplement possibles
je ve faire une liste deroulante auquel apparaitra lib_classe defini par num_classe
et lorsque l on choisi une classe elle génére les matieres d une autre classe defini par num_matiere et lib_matiere

voila ce ke g fait :

<form action="exemple.php?op=exemple" method="post" name="exemple">
Select N°1 :,
<select size="1" name="S1"> <option value=""></option>
<?
@ $connect = mysql_pconnect($sql_serveur, $sql_user, $sql_pass) or die("Impossible de se connecter à la base de données");
mysql_select_db($sql_database);
$query = "select num_classe,lib_classe from classe_docs";
$result_tab1 = mysql_query($query);
while($tab_S1=mysql_fetch_array($result_tab1))
{
echo "<option value=\"".$tab_S1[num_classe]."\">".$tab_S1[lib_classe]."</option>\n";
}
?>
</select>,

----

Select N°2 :

<select size="1" name="S2">
<option>
</option>
$query = "select num_matiere,lib_matiere from matiere_docs";
$query .= " where classe_docs.num_classe=concerner.num_classe and concerner.num_matiere=matiere_docs.num_matiere and classe_docs.num_classe = '".$tab_S1[num_classe]."'";
$result_tab2 = mysql_query($query);
while($tab_S2=mysql_fetch_array($result_tab2))
{
echo "<option value="".$tab_S2[num_matiere]."">".$tab_S2[lib_matiere]."</option>\n";

</select>
</form>

</html>

4 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
19 mars 2006 à 16:55
salut,



au debut



$classe= $_POST['S1'];

...

<select size="1" name="S1" onchange='this.form.submit();' >

// en admettant que tu re-soumettes la même page bien sûr

...

...

$query . = " where classe_docs.num_classe=concerner.num_classe and
concerner.num_matiere=matiere_docs.num_matiere and
classe_docs.num_classe ='$classe' ";

// assurer une valeur par defaut à $classe



il faut aménager (tester $classe ...) faire deux formulaires peut être
1 pour la premiere selection, un autre pour valider l'ensemble, mais en
gros c'est un truc dans le genre
0
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
19 mars 2006 à 19:28
merci beaucoup
juste une chose quand je sélectionne dans ma premiere liste déroulante une donnée
il y a effectivement un rafraichissement de la page mais sa revient au point de départ c'est a dire que la premiere est a nouveau a selectionner et la deuxieme est toujous vide
je rappelle ke je désire générer les choix d une liste déroulantes en fonction d une autre liste déroulante dans la mm page.

je remet mon code dans l integralite :

//connexion a ma base de donnée
<?
$sql_serveur = "localhost"; // Serveur
$sql_user = "root"; // Utilisateur
$sql_pass = ""; // Mot de passe
$sql_database = "intranet"; // Base de données
$classe=$_POST['S1'];
?>
//début de mo formulaire


<form action="mapage.php" method="post" name="mapage">
Select N°1 :,
<select size="1" name='S1' onChange="this.form.submit();">
<option selected value=""></option>

//premiere liste deroulante
<?
@ $connect = mysql_pconnect($sql_serveur, $sql_user, $sql_pass) or die("Impossible de se connecter à la base de données");
mysql_select_db($sql_database);
$query = "select num_classe,lib_classe from classe_docs";
$result_tab1 = mysql_query($query);
while($tab_S1=mysql_fetch_array($result_tab1))
{
echo "<option value=\"".$tab_S1['num_classe']."\">".$tab_S1['lib_classe']."</option>\n";
}

?>
</select>,

----

Select N°2 :,
//deuxieme liste deroulante

<select size="1" name="S2">
<?
@ $connect = mysql_pconnect($sql_serveur, $sql_user, $sql_pass) or die("Impossible de se connecter à la base de données");
mysql_select_db($sql_database);
$query2 = "select num_matiere,lib_matiere from matiere_docs,concerner,classe_docs";
$query2 = " where classe_docs.num_classe=concerner.num_classe and concerner.num_matiere=matiere_docs.num_matiere and classe_docs.num_classe = '".$classe."'";
$result_tab2 = mysql_query($query2);
while($tab_S2=mysql_fetch_array($result_tab2))
{

echo "<option value=\"".$tab_S2['num_matiere']."\">".$tab_S2['lib_matiere']."</option>\n";
}

?>
</select>

</form>



</html>
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
20 mars 2006 à 10:42
dans ta premeire liste
teste $classe
if($_POST['S1']!= '') $classe=$_POST['S1'];
...

<option selected value =""></option> --> enleve cette ligne

...
echo "<option value= ''>--Choisissez une classe--</option>";
{
echo "<option value=' ".$tab_S1['num_classe']. " ' ";
if($classe==$tab_S1['num_classe']) echo " selected ";
echo ">".$tab_S1['lib_classe']."</option>\n";
}

...
@ $connect = mysql_pconnect($sql_serveur, $sql_user, $sql_pass) or die("Impossible de se connecter à la base de données");
mysql_select_db($sql_database);
pas besoin de faire deux connexions dans ta page, une seule suffit
et ça devrait marcher normalement

dans le doute fais un echo de ta deuxieme requete sql ($query2)
pour voir si $classe est bien renseigné
0
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
20 mars 2006 à 19:25
je te remercie
et désolé juste une chose qui ne veu toujours pas fonctionner:
g ma deuxieme liste déroulantes qui ne veu pas se remplir dans tous les cas

pourtant ma base de donnée est la suivante
concerner: classe_docs:
num_classe num_matiere num_classe lib_classe
1 1 1 BTSIG
2 3 2 BTSMUC
... ...
matiere_docs:
num_matiere lib_matiere
1 analyse
2 algo
3 comptabilité

et mon code est le suivant désormais :

<? $sql_serveur = "localhost"; // Serveur
$sql_user = "root"; // Utilisateur
$sql_pass = ""; // Mot de passe
$sql_database = "intranet"; // Base de données
?>


<form action="mapage.php" method="post" name="mapage">
Select N°1 :,
<select size="1" name='S1' onChange="this.form.submit();">
<?
if($_POST['S1']!='') $classe=$_POST['S1'];
echo "<option value=''>--Choisissez une classe--</option>";

$connect = mysql_connect($sql_serveur, $sql_user, $sql_pass) or die("Impossible de se connecter à la base de données");
mysql_select_db($sql_database);
$query = "select num_classe,lib_classe from classe_docs";
$result_tab1 = mysql_query($query);
while($tab_S1 = mysql_fetch_array($result_tab1))
{
echo "<option value=\"".$tab_S1['num_classe']."\"";
if($classe==$tab_S1['num_classe']){
echo " selected";
}
echo " >".$tab_S1['lib_classe']."</option>\n";
}

?>
</select>,

----

Select N°2 :,
<select size="1" name="S2">
<?
$query2 = "select num_matiere,lib_matiere from matiere_docs,concerner,classe_docs";
$query2 = "where classe_docs.num_classe=concerner.num_classe";
$query2 = "and concerner.num_matiere=matiere_docs.num_matiere";$query2 "and classe_docs.num_classe'".$classe."'";
$result_tab2 = mysql_query($query2);
while($tab_S2 = mysql_fetch_array($result_tab2))
{
echo "<option value=\"".$tab_S2['num_matiere']."\">".$tab_S2['lib_matiere']."</option>\n";
}
?>
</select>

</form>



</html>
0
Rejoignez-nous