Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/01/2016, 11:36
rodocoyote15
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Select con valores de mysql y dependiente de otro

Tendríamos que hacer uso de ajax para realizar la petición asíncrona.

Paso 1.
Código PHP:
Ver original
  1. <select name="Usuario" id="usuario">
  2.         <option value="0" disabled selected>Selecciona un usuario...</option>
  3.         <?php
  4.             $MyConnect = new MySQLi ('localhost','root','','calificaciones');
  5.             $Query = "SELECT * FROM `Profesores` WHERE `RolUsuario` = 'P'";
  6.             $MyQuery = $MyConnect->query($Query);
  7.             while($MyFetch = $MyQuery->fetch_assoc()){
  8.                 echo '<option value="'.$MyFetch['ID'].'">'.utf8_encode($MyFetch['NombreCompleto']).'</option>';
  9.             }
  10.         ?>
  11.     </select>

Luego con ajax
Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/JavaScript">
  2.             $(document).ready(function(){
  3.                 $("#usuario").change(function(event){                    
  4.                     var id = $("#usuario").find(':selected').val();
  5.  
  6.                     $("#curso").load('php/generaCursos.php?id='+id);   //llamas al php donde devolverá los datos del select "hijo"                
  7.                 });
  8.             });
  9. </script>

En el archivo generaCursos.php

Código PHP:
Ver original
  1. <?php
  2.         $MyConnect = new MySQLi ('localhost','root','','calificaciones');
  3.         $Query = "SELECT * FROM Asignaturas WHERE `IDUsuario` = '".$_GET['id']."'";
  4.         $MyQuery = $MyConnect->query($Query);
  5.         while ($MyFetch = $MyQuery->fetch_assoc()){
  6.             echo ' <option value="'.$MyFetch['ID'].'">'.utf8_encode($MyFetch['NombreAsignatura']).'</option>   ';
  7.         }
  8.         ?>

Y el select de cursos quedaría así
Código HTML:
Ver original
  1. <form action="Paso3.php" method="get">
  2.     <select name="Curso" id="curso">
  3.         <option value="" selected disabled>[Despliegue la lista]...</option>
  4.     </select>
  5.     <input type="text" value="<?php echo $_GET['Usuario']; ?>" name="Usuario">
  6.     <br>
  7.     <input type="submit" value="Acceder a sus calificaciones">
  8. </form>

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