essaye avec ses 2 fichiers :
index.php c'est ta page avec tes 2 select gerer par javascript
lire_client.php retourne les valeur de la table client.
verifie les clauses WHERE en fonction de tes champs tables 
je l'utilise pour une table categorie et sous catégorie donc dans le mm esprit que toi.
index.php
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
*/
function sendData(param, page)
{
if(document.all)
{
//Internet Explorer
var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
}//fin if
else
{
//Mozilla
var XhrObj = new XMLHttpRequest();
}//fin else
//définition de l'endroit d'affichage:
var content = document.getElementById("contenu");
XhrObj.open("POST", page);
//Ok pour la page cible
XhrObj.onreadystatechange = function()
{
if (XhrObj.readyState == 4 && XhrObj.status == 200)
content.innerHTML = XhrObj.responseText ;
}
XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
}//fin fonction SendData
</script>
</head>
<body>
<table width="44%" border="0" align="center">
<tr>
<td width="42%"><div align="right"><font size="2" face="Tahoma">Fournisseur :</font></div></td>
<td width="58%"><?php
include('../connexion.php');
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
// Séléction de tous les enregistrements de la table Catégorie
$rq="Select nom from fournisseur order by id;";
$result= mysql_query ($rq) or die ("Select impossible");
?>
<select size="1" name="general" onChange="sendData('id='+this.value,'lire_client.php')" onkeyup="sendData('id='+this.value,'lire_client.php')">
<?php
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "<option value=".($dt[0]).">".($dt[1])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>
</td>
</tr>
<tr>
<td><div align="right"><font size="2" face="Tahoma">Client
: </font></div></td>
<td> <div id="contenu">
<?php
// affichage des sous-catégorie appartenant à la première catégorie.
echo "<select size='1' name='categ'>";
$rq="Select nomclt from client where code_fournisseur=".$j." order by id;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".$dt[0].">".htmlentities($dt[1])."</option><br>";
}
echo "</select>";
mysql_close();
?>
</div></td>
</tr>
</table>
</body>
</html>
fichier lire_client.php
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
include('../connexion.php');
// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) ){
$rq="Select * from client where code_fournisseur=".$_POST['id']." order by id;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0)
{
echo "<select size='1' name='categ'>";
}
else
{
echo utf8_encode("Pas de sous catégories disponible");
}
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".($dt[0]).">".htmlentities($dt[1])."</option><br>";
}
echo "</select>";
}
mysql_close();
?>