Guest User

Untitled

a guest
Jan 9th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1. /*Carga los datos de los departamentos en el Select*/
  2. <div>
  3. <select class="form-control" id="idDep" name="idDep" required>
  4. <option value="">-- Escoja una opción --</option>
  5. <?php foreach (departamentoData::getAll() as $departamento):?>
  6. <option value="<?php echo $departamento->idDep; ?>"><?php echo $departamento->nombre; ?></option>
  7. <?php endforeach; ?>
  8. </select>
  9. </div>
  10.  
  11. /*CargaRÁ los datos de los municipios en el Select*/
  12. <div>
  13. <select class="form-control" id="idMun" name="idMun" required>
  14. <option value="">-- Escoja una opción --</option>
  15. </select>
  16. </div>
  17.  
  18. $(function() {
  19.  
  20. $( "#idDep" ).on( "change", function() {
  21. var intId=$(this).val();
  22. var datos = { idDep: intId };
  23. var url='buscar.php';
  24.  
  25. var request = $.ajax
  26. ({
  27. url: url,
  28. method: 'POST',
  29. data: datos,
  30. dataType: 'json'
  31. });
  32.  
  33. /*
  34. *Esta es una parte muy importante, aquí se tratan los datos de la respuesta
  35. *se asume que se recibe un JSON correcto con dos claves: una llamada id_municipio
  36. *y la otra llamada municipio, las cuales se presentarán como value y datos de cada option
  37. *de tu select PARA QUE ESTO FUNCIONE TU MODELO DEBE SER CAPAZ DE DEVOLVER UN JSON VÁLIDO
  38. *dado que no tengo control de lo que ocurre en tu modelo
  39. *ni sé que tipo de dato devuelve ni como lo devuelve, no puedo hacer más que advertirlo aquí
  40. */
  41. request.done(function( respuesta )
  42. {
  43. if(!respuesta.hasOwnProperty('error')){
  44. $.each(respuesta, function(k, v) {
  45. $('#idMun').append('<option value="' + v.id_municipio + '">' + v.municipio + '</option>');
  46. });
  47. }else{
  48.  
  49. //Puedes mostrar un mensaje de error en algún div del DOM
  50. }
  51. });
  52.  
  53. request.fail(function( jqXHR, textStatus )
  54. {
  55. alert( "Hubo un error: " + textStatus );
  56. });
  57.  
  58. });
  59.  
  60. });
  61.  
  62. if (isset($_POST["idDep"])){
  63. /*Aquí si hace falta habrá que incluir la clase municipios con include*/
  64. $intId=$_POST["idDep"];
  65.  
  66. /*Usamos un nuevo método que habremos creado en la clase municipio: getByDepartamento*/
  67. $json=json_encode(municipioData::getByDepartamento($intId));
  68. }else{
  69. $json=json_encode(array('error'=>'No se recibió un valor de id departamento para filtar'));
  70. }
  71. print_r($json);
  72.  
  73. <?php
  74. class municipioData {
  75.  
  76. public static $tablename = "municipio";
  77.  
  78. public function municipioData(){
  79. }
  80.  
  81. public static function getAll(){
  82. $sql = "select * from ".self::$tablename;
  83. $query = Executor::doit($sql);
  84. return Model::many($query[0],new municipioData());
  85. }
  86.  
  87.  
  88. public static function getByDepartamento($intId){
  89. /*
  90. *OJO: Aquí asumo que en la tabla municipio hay un campo llamado id_departamento
  91. *que sirve para identificar a que departamento pertenece el municipio
  92. *si no se llama así debes cambiarlo por como se llame
  93. *Asumo también que hay un campo llamado id_municipio y otro llamado municipio
  94. */
  95. $sql = "select id_municipio, municipio from ".self::$tablename. " where id_departamento=."$intId;
  96. $query = Executor::doit($sql);
  97.  
  98. /*
  99. *OJO: No sé lo que retorna esta llamada,
  100. *es importante saberlo para tratar los datos en la respuesta
  101. *asumiré que el modelo devuelve un array con los datos
  102. */
  103. return Model::many($query[0],new municipioData());
  104. }
  105.  
  106.  
  107.  
  108.  
  109. }
  110. ?>
Add Comment
Please, Sign In to add comment