estem creo que tal vez la cosa mejore asi pero no estoy seguro
Código PHP:
<?php
//conexión a mysql
if (!empty($_POST['enviado'])){
echo "Procesando formulario:<br>";
echo "Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
echo "Recibido id_tabla_hija: ".$_POST['id_hija'];
} else {
$conexion = mysql_connect($servidor, $usuario, $clave) or die(mysql_error());
mysql_select_db($basedatos, $conexion) or die(mysql_error());
$id_padre=$_POST['id_padre'];
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<select name="id_padre" onChange="this.form.submit()">
<option value=""> Seleccione un Item </option>
<?php
$SQLconsulta_padre="SELECT * FROM lenguajes";
$consulta_padre = mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());
while($registro_padre=mysql_fetch_assoc($consulta_padre)){
if ($id_padre == $registro_padre['id']){
?>
<option value="<?php echo $registro_padre['id'] ?>" selected><?php echo $registro_padre['lenguaje']; ?></option>
<?php
} else { ?>
<option value="<?php $registro_padre['id'];?>"><?php echo $registro_padre['lenguaje'];?></option>
<?php
}
} ?>
</select>
<?php
mysql_free_result($consulta_padre);
?>
<select name="id_hija">
<?php
if (!empty($id_padre)){
$SQLconsulta_hija="SELECT * FROM categorias WHERE id_lenguaje ='$id_padre'";
$consulta_hija = mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
if (mysql_num_rows($consulta_hija) != 0){
while($registro_hija=mysql_fetch_assoc($consulta_hija)){
?>
<option value="<?php echo $registro_hija['id'];?>"><?php echo $registro_hija['categoria'];?></option>
<?php
}
} else { ?>
<option value=""> No hay registros para este Item </option><?php
}
} else {
?>
<option value=""> -- Seleccione un Item -- </option>
<?php
}
mysql_free_result($consulta_hija);
?>
</select>
<input type="submit" name="enviado" value="Enviar" />
</form>
<?php
}
?>
igualmente creo que habria que incorporar un sentencia del tipo:
if(trim($registro_padre['id'])==trim($registro_padre))
en vez de esto
if (mysql_num_rows($consulta_hija) != 0)
Nota : el uso de echo "<algo....." o sea echo html hace que tu codigo sea menos optimo
te lo digo yo que lo acabo de leer
me olvidaba encaja <br> donde necesites me olvide....
saludos!!