Loading one select from another

0

I'm trying to load a select from another with ajax and php the code I'm using is the following

    <?php
      include_once("configuracionbd.php");
      $consultaPrograma = "SELECT * FROM programa ORDER BY id_programa";

      $query = mysqli_query($mysqli, $consultaPrograma);
      $filas = mysqli_fetch_all($query, MYSQLI_ASSOC); 
      mysqli_close($mysqli);
    ?>
    <div class="form-group">
        <label for="selector1" class="col-sm-2 control-label">Programa: </label>
            <div class="col-sm-8"><select name="codPrograma" id="programa" class="form-control1">
                <option value="">- Seleccione -</option>
                   <?php foreach ($filas as $op): //llenar las opciones del primer select ?>
                      <option value="<?= $op['id_programa'] ?>"><?= $op['nombre_programa'] ?></option>  
                   <?php endforeach; ?>
</select></div>
</div> 


    <div class="form-group">
        <label for="selector1" class="col-sm-2 control-label">Asignatura</label>
            <div class="col-sm-8">
                <select name='codAsignatura' id="asignatura"  class='form-control1' disabled="">
     <option>Seleccione</option>
           </select></div>
    </div>
<!-- Agregamos la libreria Jquery -->
       <script type="text/javascript" src="jquery-3.2.0.min.js"></script>
        <!-- Iniciamos el segmento de codigo javascript -->
              <script type="text/javascript">
                $(document).ready(function(){
                    var asignatura = $('#asignatura');
             //Ejecutar accion al cambiar de opcion en el select de las bandas
                   $('#programa').change(function(){
                      var programa_id = $(this).val(); //obtener el id seleccionado
          if(programa_id !== ''){ //verificar haber seleccionado una opcion valida
        /*Inicio de llamada ajax*/
          $.ajax({
              data: {programa_id:programa_id}, //variables o parametros a enviar, formato => nombre_de_variable:contenido
              dataType: 'html', //tipo de datos que esperamos de regreso
              type: 'POST', //mandar variables como post o get
              url: 'get_asignatura.php' //url que recibe las variables
           }).done(function(data){ //metodo que se ejecuta cuando ajax ha completado su ejecucion             
                asignatura.html(data); //establecemos el contenido html de discos con la informacion que regresa ajax             
                asignatura.prop('disabled', false); //habilitar el select
         });
  /*fin de llamada ajax*/
        }else{ //en caso de seleccionar una opcion no valida
          asignatura.val(''); //seleccionar la opcion "- Seleccione -", osea como reiniciar la opcion del select
          asignatura.prop('disabled', true); //deshabilitar el select
        }    
        });
        });
</script>

And then I show you get_asignatura.php

<?php
require_once 'configuracionbd.php'; //libreria de conexion a la base

$programa_id = filter_input(INPUT_POST, 'programa_id'); //obtenemos el parametro que viene de ajax

if($programa_id != ''){ //verificamos nuevamente que sea una opcion valida

  /*Obtenemos los discos de la banda seleccionada*/
  $sql = "select id_asignatura, nombre_asignatura from asignatura where id_programa = ".$programa_id;  
  $query = mysqli_query($mysqli, $sql);
  $filas = mysqli_fetch_all($query, MYSQLI_ASSOC); 
  mysqli_close($mysqli);
}

/**
 * Como notaras vamos a generar codigo html, esto es lo que sera retornado a ajax para llenar 
 * el combo dependiente
 */
?>

<option value="">- Seleccione -</option>
<?php foreach($filas as $op): //creamos las opciones a partir de los datos obtenidos ?>
<option value="<?= $op['id_asignatura'] ?>"><?= $op['nombre_asignatura'] ?></option>
<?php endforeach; ?>

To finish this is the error that shows me, it tells me that the variable rows is not defined and that the foreach is not receiving a valid argument

    
asked by Carlos Alberto Guerrero Navarr 31.10.2018 в 14:25
source

0 answers