Código:
<?php //incluímos la clase ajax require ('xajax/xajax.inc.php'); //instanciamos el objeto de la clase xajax $xajax = new xajax(); $xajax->setCharEncoding('ISO-8859-1'); $xajax->configure('decodeUTF8Input',true); function select_combinado($id_provincia){ $poblaciones = array(); $i=0; $_sql = mysql_query("SELECT * FROM categoria_link ORDER BY id ASC" ); //o IRDER BY id DESC while ($row = mysql_fetch_row($_sql)){ $j=0; $_sql2 = mysql_query("SELECT * FROM subcategoria_link WHERE categoria_padre = '$row[1]' ORDER BY id ASC"); //o IRDER BY id DESC while ($row2 = mysql_fetch_row($_sql2)){ $pob[$i][$j] = $row2[1];//nombre de la subcategoria $j++; } $i++; } $nuevo_select = "<select name='poblaciones'>"; for ($i=0; $i<count($poblaciones[$id_provincia]); $i++){ //for ($i=0; $i<2; $i++){ $nuevo_select .= '<option value="' . $i . '">' . $poblaciones[$id_provincia][$i] . '</option>'; } $nuevo_select .= "</select>"; return $nuevo_select; } function generar_select($cod_provincia){ //instanciamos el objeto para generar la respuesta con ajax $respuesta = new xajaxResponse(); if ($cod_provincia==999){ //escribimos el select de poblaciones vacío $nuevo_select = '<select name="poblaciones"> <option value=0>Elegir provincia</option> </select> '; }else{ $nuevo_select = select_combinado($cod_provincia,$pob); } //escribimos en la capa con id="seleccombinado" $respuesta->assign("seleccombinado","innerHTML",$nuevo_select); //tenemos que devolver la instanciación del objeto xajaxResponse return $respuesta; } //asociamos la función creada anteriormente al objeto xajax $xajax->registerFunction("generar_select"); //El objeto xajax tiene que procesar cualquier petición $xajax->processRequest(); ?> <? $h=0; $categorias_pad = array(); $_sql = mysql_query("SELECT * FROM categoria_link"); //o IRDER BY id DESC while ($row = mysql_fetch_row($_sql)){ $categorias_pad[$h] = $row[1];//nombre de la categoria $h++; } ?> <form name="formulario"> Provincia: <br> <select name="provincia" onChange="xajax_generar_select(document.formulario.provincia.options[document.formulario.provincia.selectedIndex].value)"> <option value="999">Selecciona provincia</option> <? For ($size=0;$size<$h;$size++) { echo '<option value="'.$size.'">'.$categorias_pad[$size].'</option>'; } ?> </select> <br> <br> Población: <div id="seleccombinado"> <select name="poblaciones"> <option value=0>Elegir provincia</option> </select> </div> </form> ?>