Hola amigos, estoy trabajando con un script de selects dinámicos en los cuales cargo los datos de una BD mysql en dos select que al seleccionar una opción del primero me muestre en el segundo select las opciones asociadas a la del primer select pero el problema está en que cuando selecciono una opción del primer select el segundo no carga ninguna opción, el script es el siguiente
Código PHP:
<?php
//conexión a mysql
include('connect.php');
//seleccionamos las opciones del select principal
$sql = "SELECT id_cat,categoria FROM tutscat ORDER BY id_cat";
$res = mysql_query($sql);
//obtenemos el número de registros
$num = mysql_num_rows($res);
?>
<form name="form1" method="post">
<!--Combo principal-->
<select name="categoria" onChange="redirect(this.options.selectedIndex)" style="width: 160px;">
<option selected value="0">Categoría</option>
<?php
for($i=0;$i<$num;$i++) {
$idcat[$i] = mysql_result($res,$i,0);
$categoria[$i] = mysql_result($res,$i,1);
echo "<option value='$categoria[$i]'>$categoria[$i]</option>";
}
?>
</select>
<!--Combo dinámico-->
<select name="titulo" style="width: 160px;">
<option selected value="0">Titulo</option>
</select>
</form>
<?php
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[i]=new Array()";
//Opciones cuando no se ha hecho ninguna selección en el combo principal-->
echo "group[0][0]=new Option('Titulo','0');";
for($i=0;$i<$num;$i++) {
$sql = "SELECT id_tuto, titulo, categoria FROM tutoriales WHERE categoria='".$categoria[$i]."'";
$res = mysql_query($sql);
//Obtenemos el número de articulos para esa categoria
$num2 = mysql_num_rows($res);
for($j=0;$j<$num2;$j++) {
$idtuto = mysql_result($res,$j,0);
$titulo = mysql_result($res,$j,1);
//Opciones para la opción $i del combo principal
echo "group[$num][$j]=new Option('$titulo','$idtuto')";
}
}
?>
var temp=document.form1.titulo
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[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
//-->
</script>
No sé en dónde puede estar la falla, espero que me puedan echar una mano con ello, gracias de antemano.
Saludos.