Voila ce que j'ai fait pour remplir une combo en fonction du choix effectué dans une combo précedente (c'est un extrait, en fait j'ai 4 combo en cascade). Je pense que c'est lisible, mais je peux te donner la description des champs et des tables si c'est nécessaire.
</head>
<body>
<form name="calcul" method='post' action='combobox.php'>
<?php
echo affichType()
?>
</form>
<?php
function affichType()
{
$sql = "SELECT typ_lib FROM type ORDER BY typ_lib";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$choix = isset($_POST['type']) ? $_POST['type'] : "";
$type = "";
$type.="<select name='type'>";
$type.="<option value='default'> [-- Type d'articles --] </option>";
while($data = mysql_fetch_row($req))
{
for ($i=0;$i<count($data);$i++)
{
$selected = $data[0] == $choix ? " selected = \"\"" : null;
$type.="<option value=\"".$data[0]."\"".$selected.">".$data[0]."</option>";
}
}
$type.="</select>";
$type.="<input type='submit' value='ok'><br>";
if (isSet($_POST['type'])&& $_POST['type'] != "default")
{
$type.= affichArt();
}
return $type;
}
function affichArt()
{
$choix = isset($_POST['article']) ? $_POST['article'] : "";
$type=$_POST['type'];
$sql = "SELECT typ_id FROM type WHERE typ_lib='".$type."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_row($req)){
$sql1 = "SELECT art_lib FROM article WHERE art_typ='".$data[0]."'GROUP BY art_lib";
$req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
$article="";
$article.="<select name='article'>";
$article.="<option value='default'> [-- Article --] </option>";
while($data1 = mysql_fetch_row($req1))
{
for ($i=0;$i<count($data1);$i++)
{
$selected = $data1[0] == $choix ? " selected = \"\"" : null;
$article.="<option value=\"".$data1[0]."\"". $selected .">".$data1[0]."</option>\n";
}
}
}
$article.="</select><br/>";
return $article;
}