Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Novato con XAJAX

Estas en el tema de Novato con XAJAX en el foro de Frameworks JS en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/07/2010, 03:07
Avatar de juanmiguel  
Fecha de Ingreso: enero-2009
Mensajes: 18
Antigüedad: 15 años, 10 meses
Puntos: 0
Novato con XAJAX

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
  #2 (permalink)  
Antiguo 13/07/2010, 03:19
Avatar de juanmiguel  
Fecha de Ingreso: enero-2009
Mensajes: 18
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Novato con XAJAX

Me respondo solo, al releer el mensaje que os escribia me he dado cuenta del problema. Está en la función select_combinado, al "repintar" el select olvidé poner el onchange

Bebería quedar así:

Código PHP:
function select_combinado($nombre,$titulo,$consulta_creada){
   
$nuevo_select "<select name=\"".$nombre."\" onchange=\"xajax_generar_selects_a_partir_de_".$nombre."(this.value)\" size=5>\n";
   
$nuevo_select .= "<option value=\"0\" selected>" $titulo "</option>\n";
   include 
"conexion.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;

Gracias y lo siento

Etiquetas: combinados, multiples, selects, xajax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:14.