Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2012, 15:15
Avatar de a_gomez
a_gomez
 
Fecha de Ingreso: marzo-2012
Ubicación: /var/www/
Mensajes: 48
Antigüedad: 12 años, 8 meses
Puntos: 2
Pregunta combox dependientes con Xajax

por favor ayudenme alguien que se pa de Xajax por favor

tengo este codigo para poder tener un combox dependiente de
Ciudad -> Comuna -> Barrio

me carga el primer combo pero a la hora de pasar a la funcion busca_comuna no me carga nada

gracias por todos sus aportes ....


Código PHP:
Ver original
  1. <?php
  2.  
  3. require_once("conexion.php");//incluimos los archivos de conexion
  4. @require_once("xajax/xajax_core/xajax.inc.php");
  5. $xajax = new xajax();
  6. $xajax->configure('javascript URI','xajax');
  7. ////Definimos las opciones por fecto. éstas pueden tomarse de $_POST, $_GET, $_SESSION, base de datos o lo que se requiera
  8. $ciudad_sel='';
  9. $comuna_sel='';
  10. $barrio_sel='';
  11.  
  12.  
  13. function busca_comuna($ciudad,$sel=''){//definimos la funcion que dado un ciudad busca los municipios
  14.    
  15.    $comuna=mysql_query("select distinct comuna from barrios where ciudad='$ciudad'");//buscamos las comunas de la ciudad indicada
  16.    $js="
  17.   var sel=document.getElementById('comuna');//tomamos el select
  18.   sel.length=1;//En caso de tener opciones lo 'vaciamos', dejando solo la primera ";
  19.    $x=1;
  20.    while($m=mysql_fetch_assoc($comuna)){
  21.        $js.="
  22.       sel.length++;//agregamos una nueva opcion
  23.       sel.options[$x].value='$m[comuna]';//Indicamos el valor puede ser diferente al texto
  24.       sel.options[$x].text='$m[comuna]';";
  25.        if($m['comuna']==$sel)//si el municipio es la opcion por defecto
  26.            $js.="sel.options[$x].selected=true;";//indicamos que quede seleccionado
  27.        $x++;
  28.    }
  29.    mysql_free_result($comuna);
  30.    mysql_close();
  31.    $respuesta= new xajaxResponse();//creamos una respuesta tipo xajax
  32.    $respuesta->script($js);//asignamos el script js a la respuesta
  33.    return $respuesta; //respondemos el resultado
  34. }
  35. function busca_barrio($ciudad,$comuna,$sel=''){//definimos la funcion que dado un ciudad y municipio busca las colonias
  36.    
  37.    $barrio=mysql_query("select distinct barrio from barrios where ciudad='$ciudad' and comuna='$comuna'");//ahora buscamos las colonias del ciudad y municipio
  38.    $js="
  39.   var sel=document.getElementById('barrio');//tomamos el select
  40.   sel.length=1;//En caso de tener opciones lo 'vaciamos', dejando solo la primera ";
  41.    $x=1;
  42.    while($c=mysql_fetch_assoc($barrio)){
  43.        $js.="
  44.       sel.length++;//agregamos una nueva opcion
  45.       sel.options[$x].value='$c[barrio]';
  46.       sel.options[$x].text='$c[barrio]';";
  47.        if($c['barrio']==$sel)//si la colonia es la opcion por defecto
  48.            $js.="sel.options[$x].selected=true;";//indicamos que quede seleccionada
  49.        $x++;
  50.    }
  51.    mysql_free_result($barrio);
  52.    mysql_close();
  53.    $respuesta= new xajaxResponse();//creamos una respuesta tipo xajax
  54.    $respuesta->script($js);//asignamos el script js a la respuesta
  55.    return $respuesta; //respondemos el resultado
  56. }
  57.  
  58. $xajax->registerFunction("busca_comuna");//registramos nuestras funciones php para que se puedan llamar via ajax
  59. $xajax->registerFunction("busca_barrio");
  60. $xajax->processRequest();//Indicamos a xajax que procese las respuestas.
  61. ?>
  62. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
  63. <html>
  64. <head>
  65.    <?php $xajax->printJavascript();?>
  66.  </head>
  67.  <body>
  68. <select name="ciudad" id="ciudad" onchange="xajax_busca_comuna(this.value,'<?php echo $comuna_sel?>');"><!-- Al cambiar, llamara la funcion que buscara los municipios del ciudad selecionado, pasando ademas el municipio por defecto si lo hubiera-->
  69.    <option value="">----- SELECCIONE LA CIUDAD -----</option>
  70.    <?php
  71.        
  72.        $ciudad=mysql_query("select distinct ciudad from barrios order by ciudad");//distinct para obtener los ciudades sin repetirse
  73.        while($p=mysql_fetch_assoc($ciudad)){
  74.            echo "<option value=\"$p[ciudad]\" ";
  75.            if($p['ciudad']==$ciudad_sel)//$ciudad_sel seria la opción por defecto, puede ser obtenida por post, sesion, bd etc.
  76.                echo 'selected';
  77.            echo ">$p[ciudad]</option>";
  78.        }
  79.        mysql_free_result($ciudad);
  80.        mysql_close();
  81.    ?>
  82.   </select>
  83.  
  84.   <select name="comuna" id="comuna" onchange="xajax_busca_barrio(document.getElementById('ciudad').value,this.value,'<?php echo $barrio_sel?>');"><!-- Ahora pasamos dos parametros, el ciudad y la colonia seleccionada-->
  85.        <option value="">-- SELECCIONE LA COMUNA ----</option>
  86.   </select>
  87.  
  88.   <select name="barrio" id="barrio">
  89.        <option value="">----- SELECCIONE EL BARRIO -----</option>
  90.   </select>
  91.    
  92.  </body>
  93. </html>