Tendríamos que hacer uso de ajax para realizar la petición asíncrona.
Paso 1.
Código PHP:
Ver original<select name="Usuario" id="usuario">
<option value="0" disabled selected>Selecciona un usuario...</option>
<?php
$MyConnect = new MySQLi ('localhost','root','','calificaciones');
$Query = "SELECT * FROM `Profesores` WHERE `RolUsuario` = 'P'";
$MyQuery = $MyConnect->query($Query);
while($MyFetch = $MyQuery->fetch_assoc()){
echo '<option value="'.$MyFetch['ID'].'">'.utf8_encode($MyFetch['NombreCompleto']).'</option>'; }
?>
</select>
Luego con ajax
Código Javascript
:
Ver original<script language="JavaScript" type="text/JavaScript">
$(document).ready(function(){
$("#usuario").change(function(event){
var id = $("#usuario").find(':selected').val();
$("#curso").load('php/generaCursos.php?id='+id); //llamas al php donde devolverá los datos del select "hijo"
});
});
</script>
En el archivo generaCursos.php
Código PHP:
Ver original<?php
$MyConnect = new MySQLi ('localhost','root','','calificaciones');
$Query = "SELECT * FROM Asignaturas WHERE `IDUsuario` = '".$_GET['id']."'";
$MyQuery = $MyConnect->query($Query);
while ($MyFetch = $MyQuery->fetch_assoc()){
echo ' <option value="'.$MyFetch['ID'].'">'.utf8_encode($MyFetch['NombreAsignatura']).'</option> '; }
?>
Y el select de cursos quedaría así
Código HTML:
Ver original<form action="Paso3.php" method="get"> <select name="Curso" id="curso"> <option value="" selected disabled>[Despliegue la lista]...
</option> <input type="text" value="<?php echo $_GET['Usuario']; ?>" name="Usuario">
<input type="submit" value="Acceder a sus calificaciones">
Cuando haya un cambio en el select " Usuario " ajax envía el value del Select al archivo php "generaCursos", hace la consulta en MySql e imprime en ese php tantos select como cursos haya encontrado. Eso lo capta de nuevo ajax y lo reenvía a donde está el "Paso 1". Imaginando que ahí mismo tienes el select de Cursos, debería de mandarle dicha información a ese select.
Si te ha servido, ya sabes, el +1 :D