Ok, ya entendí. Hace poco respondí una pregunta similar:
http://www.todoexpertos.com/herramientas/leermsgpublico.aspx?idproceso=891343Fíjate que se definen todos los valores de los campos select secundarios en el código javascript.
Eso es lo que tienes que recuperar de la base de datos: todos los valores posibles y pasarlos a código js.
En el ejemplo anterior sería algo así:
<?php
//conexión a mysql
//seleccionamos las opciones del select principal
$sql = "SELECT id,marca FROM marcas ORDER BY marca";
$res = mysql_query($sql);
//obtenemos el número de registros
$num = mysql_num_rows($res);
?>
<FORM name="form1" method="POST">
<!--Combo principal-->
<select name="marca" onChange="redirect(this.options.selectedIndex)" style='width:160'>
<option selected value=0>MARCA</option>
<?
for($i=0;$i<$num;$i++) {
$id_marca[$i] = mysql_result($res,$i,0);
$marca[$i] = mysql_result($res,$i,1);
echo "<option value='$id_marca[$i]'>$marca[$i]</option>";
}
?>
</select>
<!--Combo dinámico-->
<select name="modelo" style='width:160'>
<option selected value=0>MODELO</option>
</select>
</FORM>
<?
echo "<script><!--";
echo "var groups=".$num;
echo "var group=new Array(groups)";
//Crea tantos arrays como valores hay en el combo principal
echo "for (i=0; i<groups; i++) group
=new Array()";
//Opciones cuando no se ha hecho ninguna selección en el combo principal-->
echo "group[0][0]=new Option('MODELO','0');";
for($i=0;$i<$num;$i++) {
$sql = "SELECT id, modelo FROM modelos WHERE id_marca = $id_marca[$i]";
$res = mysql_query($sql);
//Obtenemos el número de modelos para esa marca
$num2 = mysql_num_rows($res);
for($j=0;$j<$num2;$j++) {
$id_modelo = mysql_result($res,$j,0);
$modelo = mysql_result($res,$j,1);
//Opciones para la opción $i del combo principal
echo "group[$num][$j]=new Option('$modelo','$id_modelo')";
}
}
?>
var temp=document.form1.modelo
function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options=new Option(group[x].text,group[x].value)
}
temp.options[0].selected=true
}
//-->
</script>
Como puedes ver, hemos cargado los arrays javascript a partir de los valores obtenidos de consultas a mysql.
Ten en cuenta que en este caso las tablas se relacionan por un id de marca que se encuentra en las 2 tablas.