Hola a todos, soy muy novato con XAJAX y al retocar un codigo que me he encontrado me ha surgido una duda ya que lo que estoy intentando hacer no me funciona, os pongo en precedentes:
Son 4 selects conbinados, si cambio uno de ellos me realiza las consultas correspondientes en los otros 3 selects para sacarme los valores correspondientes a la seleccion del primer valor. Hasta aqui tdo me funciona perfectamente.
El codigo que empleo es algo parecido al de desarrollo web:
[URL="http://www.desarrolloweb.com/articulos/actualizar-xajax-0-2-a-xajax-0-5.html"]http://www.desarrolloweb.com/articulos/actualizar-xajax-0-2-a-xajax-0-5.html[/URL]
Siendo mis funciones personales así:
Código PHP:
function select_combinado($nombre,$titulo,$consulta_creada){
$nuevo_select = "<select name=\"".$nombre."\" size=5>\n";
$nuevo_select .= "<option value=\"0\" selected>" . $titulo . "</option>\n";
include "con.php";
$consulta_sql=$consulta_creada;
// print ($consulta_sql);
$result=mysql_query($consulta_sql,$conexion);
while($row=mysql_fetch_row($result))
{
$nuevo_select .= "<option value=\"$row[0]\">$row[1]</option>\n";
}
$nuevo_select .= "</select>";
return $nuevo_select;
}
function generar_selects_a_partir_de_tipo_finalidad($id_tipo_finalidad){
$respuesta = new xajaxResponse();
$respuesta->setCharacterEncoding('ISO-8859-1');
if ($id_tipo_finalidad==0){
$consulta_localidad="AQUÍ VA LA SELECT";
$nuevo_select_localidad = select_combinado("id_localidad","CUALQUIER LOCALIDAD",$consulta_localidad);
$consulta_provincia="AQUÍ VA LA SELECT";
$nuevo_select_provincia = select_combinado("id_provincia","CUALQUIER PROVINCIA",$consulta_provincia);
$consulta_tipo_inmueble="AQUÍ VA LA SELECT";
$nuevo_select_tipo_inmueble = select_combinado("id_tipo_inmueble","CUALQUIER TIPO DE INMUEBLE",$consulta_tipo_inmueble);
}else{
$consulta_localidad="AQUÍ VA OTRA SELECT, CAMBIADA SI HA PULSDO TIPO DE FINALIDAD";
$nuevo_select_localidad = select_combinado("id_localidad","CUALQUIER LOCALIDAD",$consulta_localidad);
$consulta_provincia="AQUÍ VA OTRA SELECT, CAMBIADA SI HA PULSDO TIPO DE FINALIDAD";
$nuevo_select_provincia = select_combinado("id_provincia","CUALQUIER PROVINCIA", $consulta_provincia);
$consulta_tipo_inmueble="AQUÍ VA OTRA SELECT, CAMBIADA SI HA PULSADO TIPO DE FINALIDAD";
$nuevo_select_tipo_inmueble = select_combinado("id_tipo_inmueble","CUALQUIER TIPO DE INMUEBLE",$consulta_tipo_inmueble);
}
$respuesta->assign("id_localidad","innerHTML",$nuevo_select_localidad);
$respuesta->assign("id_provincia","innerHTML",$nuevo_select_provincia);
$respuesta->assign("id_tipo_inmueble","innerHTML",$nuevo_select_tipo_inmueble);
return $respuesta;
}
function generar_selects_a_partir_de_provincia($id_provincia){
$respuesta = new xajaxResponse();
$respuesta->setCharacterEncoding('ISO-8859-1');
if ($id_tipo_finalidad==0){
$consulta_localidad="AQUÍ VA LA SELECT";
$nuevo_select_localidad = select_combinado("id_localidad","CUALQUIER LOCALIDAD",$consulta_localidad);
$consulta_provincia="AQUÍ VA LA SELECT";
$nuevo_select_tipo_finalidad = select_combinado("id_tipo_finalidad","CUALQUIER PROVINCIA",$consulta_provincia);
$consulta_tipo_inmueble="AQUÍ VA LA SELECT";
$nuevo_select_tipo_inmueble = select_combinado("id_tipo_inmueble","CUALQUIER TIPO DE INMUEBLE",$consulta_tipo_inmueble);
}else{
$consulta_localidad="AQUÍ VA OTRA SELECT, CAMBIADA SI HA PULSADO PROVINCIA";
$nuevo_select_localidad = select_combinado("id_localidad","CUALQUIER LOCALIDAD",$consulta_localidad);
$consulta_tipo_finalidad="AQUÍ VA OTRA SELECT, CAMBIADA SI HA PULSDO PROVINCIA";
$nuevo_select_tipo_finalidad = select_combinado("id_provincia","CUALQUIER PROVINCIA", $consulta_provincia);
$consulta_tipo_inmueble="AQUÍ VA OTRA SELECT, CAMBIADA SI HA PULSADO PROVINCIA";
$nuevo_select_tipo_inmueble = select_combinado("id_tipo_inmueble","CUALQUIER TIPO DE INMUEBLE",$consulta_tipo_inmueble);
}
$respuesta->assign("id_localidad","innerHTML",$nuevo_select_localidad);
$respuesta->assign("id_provincia","innerHTML",$nuevo_select_tipo_finalidad);
$respuesta->assign("id_tipo_inmueble","innerHTML",$nuevo_select_tipo_inmueble);
return $respuesta;
}
El problema que me surge es que necesito que se realize el mismo proceso para los cuatro selects, es decir que cambie lo que cambie en cada uno de los selects haga cambiar el resto. Iluso de mi me he puesto a generar la nueva función con el siguiente codigo:
Código PHP:
$xajax->register(XAJAX_FUNCTION, 'generar_selects_a_partir_de_provincia');
$xajax->register(XAJAX_FUNCTION, 'generar_selects_a_partir_de_tipo_finalidad');
y descubro que solo me funciona la primera que pulso, es decir si lo primero que cambio es el select de provincias me realiza perfectamente las consultas pero si cambio el select tipo de finalidad ya no me hace nada, si actualizo la página y pulso primero el select tipo de finalidad me raliza bien los cambios pero si voy a cambiar algo en el select de provincias no realiza nada.
La pregunta es puedo llamar a dos funciones en una misma página que me den una respuesta, ¿de que forma lo hago? ¿A que se debe el comportamiento con el código actual?
Saludos a todos y mil gracias por adelantado