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