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

no obtiene los nuevos datos de la db

Estas en el tema de no obtiene los nuevos datos de la db en el foro de Frameworks JS en Foros del Web. Hola gente!! Sigo trabajando con xajax y se me ha planteado un caso muy extraño. Los pasos son los siguientes: 1º botón del menú izquiero, ...
  #1 (permalink)  
Antiguo 02/03/2011, 02:45
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
no obtiene los nuevos datos de la db

Hola gente!!

Sigo trabajando con xajax y se me ha planteado un caso muy extraño. Los pasos son los siguientes:
1º botón del menú izquiero, se carga en el div derecho otro menú.
2º opción del menú derecho, se carga una tabla de modificación de usuario.
3º se modifica un usuario correctamente, en la db está bien.
4º al acceder desde la plataforma otra vez a ese usuario, no ha cambiado.

Para mostrar el usuario(y el cambio si lo hubiese) lo hago con 2 combos anidados en javascript, centro y usuario. Eligiendo el centro aparecen los usuarios. La cosa está en que si no refresco toda la página(utilizo xajax para no tener que hacer ésto) no se muestran los cambios, pero en nigún submenú.

La función que utilizo para rellenar el combo de usuarios es la siguiente:
Código Javascript:
Ver original
  1. function rellenaUsuarios(id_centro)
  2. {
  3.     document.fConfigura.usuario.length=0;
  4.     document.fConfigura.usuario.options[0] = new Option("","","defaultSelected","");
  5.     var indice=1;
  6.     <?
  7.         $usuario = $_SESSION['usuario'];
  8.         $conexion = conectar();
  9.         $sql_user = "SELECT * from usu_plataforma where id_nivel in(2, 3)";
  10.         $rs_user = mysql_query($sql_user, $conexion);
  11.         if(mysql_num_rows($rs_user)>0)
  12.         {
  13.             while($row_user = mysql_fetch_assoc($rs_user))
  14.             {
  15.    
  16.     ?>
  17.     if(id_centro=='<?=$row_user["id_centro"]?>')
  18.     {
  19.     document.fConfigura.usuario.options[indice] = new Option("<?=$row_usuario["nombre"]?>","<?=$row_usuario["username"]?>");
  20.     indice++;
  21.     }
  22.     <?
  23.             }
  24.         }
  25.     ?>
  26. };

Podeis darme alguna pista sobre el tema?
Gracias!!
  #2 (permalink)  
Antiguo 02/03/2011, 21:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 53
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: no obtiene los nuevos datos de la db

no se te entiende absolutamente nada, por favor se mas especifico con tus dudas y sera mas facil ayudarte. saludos
  #3 (permalink)  
Antiguo 03/03/2011, 01:35
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: no obtiene los nuevos datos de la db

Lo siento dhamaso, pensé que lo había especificado correctamente.

A ver, cargo un menú en el div contenedor(div derecho) pulsando un botón del div menú(en el lado izquierdo). Ésto lo hago con php y ajax(xajax).

En el nuevo menú derecho tengo 2 radio button y elijo el de modificar.
Tengo 2 combos anidados (tipo de usuario-que obtengo de la base de datos-, sexo-que hago un select con valores 0 y 1-, estilo-combo anidado que se carga de la base de datos según el tipo de usuario y el sexo- y color-que se carga de la base de datos según el estilo-).
Al lado de cada combo(menos el de sexo) tengo un input text para modificar el nombre de la opción elegida.

Pongamos tipo de usuario, elijo director y quiero cambiar el nombre 'director' por 'gerente superior'. La modificación se realiza correctamente, yo en la base de datos veo que 'director' ha cambiado a 'gerente superior'.
Si vuelvo a llamar a modificar usuario sin haber recargado la página los cambios no se han actualizado y en el combo sigue apareciéndome 'director'.

Voy a intentar volver a llamar a la función una vez realizados los cambios a ver si con ésto se aplican.

Gracias por la respuesta.
  #4 (permalink)  
Antiguo 03/03/2011, 02:40
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: no obtiene los nuevos datos de la db

Bueno, he intentado lo que dije, volver a llamar a la función que recarga la tabla, vuelve a llamar al combo inicial y cambiando el valor de éste y el segundo, va cargando los otros anidados a él.
Pero el único que carga correctamente es el primero, que es llamado a la base de datos desde php y no desde javascript. El problema está en los combos anidados, los que se llaman desde javascript.
¿Qué puede estar pasando si se supone que se vuelven allamar y obtener la consulta a la base de datos cada vez que elijo un valor en un combo anterior??

Gracias de nuevo

Última edición por aniMAYtions; 03/03/2011 a las 02:46
  #5 (permalink)  
Antiguo 08/03/2011, 08:42
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: no obtiene los nuevos datos de la db

Creo que estás confundiendo la parte Ajax con la carga de la pagina (PHP).

Una vez cargada tu pagina si ves el código fuente resultante, te darás cuenta que en el código javascript ya están definidos los valores iniciales.

Éstos no variarán nunca, pues una vez cargado el php (html + js resultante), no puede variar.

Lo que debes hacer es hacer la petición "desde javascript" de los datos. Acá en tu código no lo estás haciendo.

Busca en internet sobre XMLHttpRequest + JSON. Con esto debes crear un php que te retorne un JSON que contenga el array con el que dinámicamente armarás tus opciones. Además este php debe ser sin caché (otro dato que te doy), por lo que debes especificar ciertos "header()" en dicho php para que no lo use y así pueda mostrar la data del momento.

Podría detallar más, pero no sé si es la idea en este forum.

Espero te ayude.
Saludos
  #6 (permalink)  
Antiguo 08/03/2011, 14:31
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: no obtiene los nuevos datos de la db

Cita:
Iniciado por marcopinero Ver Mensaje

Una vez cargada tu pagina si ves el código fuente resultante, te darás cuenta que en el código javascript ya están definidos los valores iniciales.

Éstos no variarán nunca, pues una vez cargado el php (html + js resultante), no puede variar.
Primero de todo, gracias marcopinero por tu respuesta.

Después te comento, creo que ya es un poco tarde para estudiarme lo que me dices pues estoy a sólo unos días de entregar el proyecto.
Luego, según lo que dices, los datos no pueden cambiar. Y cómo es que cambian cada vez que selecciono un centro distinto?
La consulta sigue siendo la misma, acceder a la base de datos y obtener los resultados según el parámetro pasado.
Si yo he introducido un nuevo dato la consulta hace igual, extrae de nuevo las filas de la base de datos según los parámetros de la consulta que paso. Pero debería mostrar el nuevo registro, pues ya pertenece a esos datos, no?.
Si no es así creo que no te he entendido correctamente.

Un saludo!!

Etiquetas: ajax, nuevos
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 08:01.