antes de que se me olvide (por mas tiempo) aqui os dejo como lo e solucionado y este script como aporte para lo que os pueda servir.
Muchas gracias a jaronu, por hacerme pensar y plantearme las preguntas correctas para llegar a la solucion.
Bien e separado los dos formularios para que no tengan conflictos entre ellos y e incluido los campos ocultos para que recivan esta informacion en el segundo formulario.
Paso a esplicaros como funciona todo este tema de lista.php
Código PHP:
<?php
$servidor ="localhost"; //Servidor al que se va a conectar, normalmente localhost
$usuario ="root"; // Usuarios de la base de datos
$clave ="123456"; // Calve de la base de datos
$basedatos ="erp"; // Base de datos sobre la que vamos a trabjar
if (!empty($_POST['enviado'])){ //con esto es cuando nos distinge lo que hay que mostrar, si tiene que mostrarnos ya el resultado o seguir con las elecciones.
echo "Procesando formulario:<br>";
echo "Recibido id_departamentos: ".$_POST['id_padre']."<br>";
echo "Recibido id_areas: ".$_POST['id_hija']."<br>";
echo "Recibido id_profesores: ".$_POST['id_hija2'];
} 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']; //aqui recivimos los distintos valores de los campos
$id_hija=$_POST['id_hija'];
$id_hija2=$_POST['id_hija2'];
$id_padre=$departamento;
$id_hija=$area;
$id_hija=$profesor;
echo "$id_padre<br>$id_hija<br>$id_hija2";
echo "<form name=\"self\" action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";//Con esto hacemos que se ejecute sobre si mismo cuando cambia el valor
echo "<option value=\"\"> Seleccione un Item </option>\n";
$SQLconsulta_padre="SELECT * FROM departamentos";
$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']){
echo "<option value=\"".$registro_padre['id']."\" selected>".$registro_padre['nombre']."</option>\n";
} else {
echo "<option value=\"".$registro_padre['id']."\">".$registro_padre['nombre']."</option>\n";}
}
echo "</select>\n\n";
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.
// Formar Select "Hijo" hace casi exactamente lo mismo que el padre, mirarlo un poco por encima y si habeis entendido el padre este no os dara problemas.
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\"> Seleccione un Item </option>\n";
if (!empty($id_padre)){
$SQLconsulta_hija="SELECT * FROM areas WHERE dependencia='$id_padre'";
$consulta_hija = mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
While ($registro_hija=mysql_fetch_assoc($consulta_hija)){
if ($id_hija == $registro_hija['id']){
echo "<option value=\"".$registro_hija['id']."\" selected>".$registro_hija['nombre']."</option>\n";
} else {
echo "<option value=\"".$registro_hija['id']."\">".$registro_hija['nombre']."</option>\n";}
}
echo "</select>\n\n";}
mysql_free_result($consulta_hija);
echo "<select name=\"id_hija2\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\"> Seleccione un Item </option>\n";
if (!empty($id_hija)){
$SQLconsulta_hija2="SELECT * FROM profesores WHERE dependencia='$id_hija'";
$consulta_hija2 = mysql_query($SQLconsulta_hija2,$conexion) or die(mysql_error());
While ($registro_hija2=mysql_fetch_assoc($consulta_hija2)){
if ($id_hija=$_POST['id_hija'] == $registro_hija2['id']){
echo "<option value=\"".$registro_hija2['id']."\" selected>".$registro_hija2['nombre']."</option>\n";
} else {
echo "<option value=\"".$registro_hija2['id']."\">".$registro_hija2['nombre']."</option>\n";}
}
echo "</select>\n\n";}
mysql_free_result($consulta_hija2);
echo "</select>\n\n";
echo "<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
echo "</form>\n";}
?>