Hola sali he tenido el mismo problema y me decidi a pasar a php el ejemplo que hay por ahí en asp y javascript. Funciona a la perfeccion. Aqui lo pongo:
<?php
include('recetas/config.php');
?>
<html>
<head>
<title>Listas dependientes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<!--
Fecha: 26/04/2004
Modificado: EduLopez
[email protected]
Modificacion: Adaptacion a php del buen script en asp de Carlos de la Orden Dijs el 17 de Diciembre de 2000
--->
<form action="borra_medico.php" method="post" name="Listas">
<b>Centro</b>
<select name="Centros" size="1"
OnChange="ComponerLista (document.forms.Listas.Centros[selectedIndex].value);">
<?php
$consulta="SELECT CodCen,Centro FROM centros ORDER BY Centro";
$resultado=mysql_query($consulta,$conexion);
while($campos=mysql_fetch_array($resultado)){?>
<option value="<?php echo $campos[0];?>"><?php echo $campos[1];?></option>
<?php
}
?>
</select>
<b>Medico</b>
<select name="Medicos" size="1">
</select>
<b><br>
<input type="submit">
</form>
<script language="JavaScript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<?php
// Creamos el array de Medicos.
$consulta2="SELECT Centro,Cias,Apellido1,Apellido2,Nombre FROM facultativos";
$resultado2=mysql_query($consulta2,$conexion);
$cuenta=0;
$cen="basura";
while($campos=mysql_fetch_array($resultado2)){
if ($cen!=$campos[0]){
//cambio de centro, empiezo a contar en 0
$cuenta=0;
$cen=$campos[0];
//además tengo que crear un nuevo array para la categoría
?>
var opciones<?php echo $cen;?> = new Array();
<?php
}
?>
opciones<?php echo $cen?>[<?php echo $cuenta;?>]=new Tupla("<?php echo $campos[2]." ".$campos[3]." ".$campos[4];?>","<?php echo $campos[1];?>");
<?php
$cuenta++;
}
// Limpiamos objetos
mysql_free_result($resultado);
mysql_free_result($resultado2);
mysql_close($conexion);
?>
var contador;
function ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista padre
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
Listas.Medicos.options[contador] = optionObj;
} // for
} // ComponerLista
function BorrarLista() {
Listas.Medicos.length=0;
}
//Inicializamos
ComponerLista (1);
-->
</script>
</form>
</body>
</html>