Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Carga los datos de los departamentos en el Select*/
- <div>
- <select class="form-control" id="idDep" name="idDep" required>
- <option value="">-- Escoja una opción --</option>
- <?php foreach (departamentoData::getAll() as $departamento):?>
- <option value="<?php echo $departamento->idDep; ?>"><?php echo $departamento->nombre; ?></option>
- <?php endforeach; ?>
- </select>
- </div>
- /*CargaRÁ los datos de los municipios en el Select*/
- <div>
- <select class="form-control" id="idMun" name="idMun" required>
- <option value="">-- Escoja una opción --</option>
- </select>
- </div>
- $(function() {
- $( "#idDep" ).on( "change", function() {
- var intId=$(this).val();
- var datos = { idDep: intId };
- var url='buscar.php';
- var request = $.ajax
- ({
- url: url,
- method: 'POST',
- data: datos,
- dataType: 'json'
- });
- /*
- *Esta es una parte muy importante, aquí se tratan los datos de la respuesta
- *se asume que se recibe un JSON correcto con dos claves: una llamada id_municipio
- *y la otra llamada municipio, las cuales se presentarán como value y datos de cada option
- *de tu select PARA QUE ESTO FUNCIONE TU MODELO DEBE SER CAPAZ DE DEVOLVER UN JSON VÁLIDO
- *dado que no tengo control de lo que ocurre en tu modelo
- *ni sé que tipo de dato devuelve ni como lo devuelve, no puedo hacer más que advertirlo aquí
- */
- request.done(function( respuesta )
- {
- if(!respuesta.hasOwnProperty('error')){
- $.each(respuesta, function(k, v) {
- $('#idMun').append('<option value="' + v.id_municipio + '">' + v.municipio + '</option>');
- });
- }else{
- //Puedes mostrar un mensaje de error en algún div del DOM
- }
- });
- request.fail(function( jqXHR, textStatus )
- {
- alert( "Hubo un error: " + textStatus );
- });
- });
- });
- if (isset($_POST["idDep"])){
- /*Aquí si hace falta habrá que incluir la clase municipios con include*/
- $intId=$_POST["idDep"];
- /*Usamos un nuevo método que habremos creado en la clase municipio: getByDepartamento*/
- $json=json_encode(municipioData::getByDepartamento($intId));
- }else{
- $json=json_encode(array('error'=>'No se recibió un valor de id departamento para filtar'));
- }
- print_r($json);
- <?php
- class municipioData {
- public static $tablename = "municipio";
- public function municipioData(){
- }
- public static function getAll(){
- $sql = "select * from ".self::$tablename;
- $query = Executor::doit($sql);
- return Model::many($query[0],new municipioData());
- }
- public static function getByDepartamento($intId){
- /*
- *OJO: Aquí asumo que en la tabla municipio hay un campo llamado id_departamento
- *que sirve para identificar a que departamento pertenece el municipio
- *si no se llama así debes cambiarlo por como se llame
- *Asumo también que hay un campo llamado id_municipio y otro llamado municipio
- */
- $sql = "select id_municipio, municipio from ".self::$tablename. " where id_departamento=."$intId;
- $query = Executor::doit($sql);
- /*
- *OJO: No sé lo que retorna esta llamada,
- *es importante saberlo para tratar los datos en la respuesta
- *asumiré que el modelo devuelve un array con los datos
- */
- return Model::many($query[0],new municipioData());
- }
- }
- ?>
Add Comment
Please, Sign In to add comment