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
<?php require_once("conexion.php");//incluimos los archivos de conexion @require_once("xajax/xajax_core/xajax.inc.php"); $xajax = new xajax(); $xajax->configure('javascript URI','xajax'); ////Definimos las opciones por fecto. éstas pueden tomarse de $_POST, $_GET, $_SESSION, base de datos o lo que se requiera $ciudad_sel=''; $comuna_sel=''; $barrio_sel=''; function busca_comuna($ciudad,$sel=''){//definimos la funcion que dado un ciudad busca los municipios $comuna=mysql_query("select distinct comuna from barrios where ciudad='$ciudad'");//buscamos las comunas de la ciudad indicada $js=" var sel=document.getElementById('comuna');//tomamos el select sel.length=1;//En caso de tener opciones lo 'vaciamos', dejando solo la primera "; $x=1; $js.=" sel.length++;//agregamos una nueva opcion sel.options[$x].value='$m[comuna]';//Indicamos el valor puede ser diferente al texto sel.options[$x].text='$m[comuna]';"; if($m['comuna']==$sel)//si el municipio es la opcion por defecto $js.="sel.options[$x].selected=true;";//indicamos que quede seleccionado $x++; } $respuesta= new xajaxResponse();//creamos una respuesta tipo xajax $respuesta->script($js);//asignamos el script js a la respuesta return $respuesta; //respondemos el resultado } function busca_barrio($ciudad,$comuna,$sel=''){//definimos la funcion que dado un ciudad y municipio busca las colonias $barrio=mysql_query("select distinct barrio from barrios where ciudad='$ciudad' and comuna='$comuna'");//ahora buscamos las colonias del ciudad y municipio $js=" var sel=document.getElementById('barrio');//tomamos el select sel.length=1;//En caso de tener opciones lo 'vaciamos', dejando solo la primera "; $x=1; $js.=" sel.length++;//agregamos una nueva opcion sel.options[$x].value='$c[barrio]'; sel.options[$x].text='$c[barrio]';"; if($c['barrio']==$sel)//si la colonia es la opcion por defecto $js.="sel.options[$x].selected=true;";//indicamos que quede seleccionada $x++; } $respuesta= new xajaxResponse();//creamos una respuesta tipo xajax $respuesta->script($js);//asignamos el script js a la respuesta return $respuesta; //respondemos el resultado } $xajax->registerFunction("busca_comuna");//registramos nuestras funciones php para que se puedan llamar via ajax $xajax->registerFunction("busca_barrio"); $xajax->processRequest();//Indicamos a xajax que procese las respuestas. ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd"> <html> <head> <?php $xajax->printJavascript();?> </head> <body> <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--> <option value="">----- SELECCIONE LA CIUDAD -----</option> <?php $ciudad=mysql_query("select distinct ciudad from barrios order by ciudad");//distinct para obtener los ciudades sin repetirse echo "<option value=\"$p[ciudad]\" "; if($p['ciudad']==$ciudad_sel)//$ciudad_sel seria la opción por defecto, puede ser obtenida por post, sesion, bd etc. echo 'selected'; echo ">$p[ciudad]</option>"; } ?> </select> <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--> <option value="">-- SELECCIONE LA COMUNA ----</option> </select> <select name="barrio" id="barrio"> <option value="">----- SELECCIONE EL BARRIO -----</option> </select> </body> </html>