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

Actualización base de datos con AJAX

Estas en el tema de Actualización base de datos con AJAX en el foro de Frameworks JS en Foros del Web. Hola, tengo un problema y no llego a encontrar la solución... A ver si me podeis echar un cable. Estoy estableciendo un sistema de autentificación ...
  #1 (permalink)  
Antiguo 20/06/2010, 11:41
 
Fecha de Ingreso: septiembre-2006
Mensajes: 19
Antigüedad: 17 años, 7 meses
Puntos: 0
Actualización base de datos con AJAX

Hola, tengo un problema y no llego a encontrar la solución... A ver si me podeis echar un cable.

Estoy estableciendo un sistema de autentificación de usuarios en una web, lo típico, hacer una consulta a la base de datos y validarla si coincide usuario y contraseña. Además de eso a la vez que un usuario se conecta mediante AJAX quiero que me cambie un valor almacenado en una tabla en la BD que establezca simplemente un 1 en estado. Pues bien, esto nunca sucede...

Lo primero no hay problema, se conecta perfectamente, el problema viene cuando hago la llamada correspondiente a la función en javascript de AJAX. Os pongo código, a ver si me sabeis echar un cable y me sabeis decir.

Código PHP:
[...]
$consulta="Select count(usuario) as existe from autor where autor.usuario='".$_POST['nombre']."' and autor.pass='".md5($_POST['password'])."';";
$bd=new AgenteBD("localhost""root""""blog");
$bd->Connect();
$resultado=$bd->Consulta($consulta);
$row mysql_fetch_array($resultado);
    if(
$row['existe']==1)
    {
        
$log=$_POST['nombre'];
        
$estado=1;
        
$_SESSION['autor']=$log;
        
$_SESSION['usuariolog']=$log;
        echo 
$log;
        echo 
$estado;
        echo
" <script lenguage=\"text/javascript\">";
        echo 
"conectarUsuario('$log', '$estado')";
        echo 
"</script>";
    } 
La llamada a conectarUsuario la tengo en un fichero llamado Ajax.js (que incluí en la cabecera del index) y el código es el siguiente:

Código Javascript:
Ver original
  1. function conectarUsuario(nombre, stat) {
  2.  
  3.   //Si es firefox, chrome o similares
  4.   if(window.XMLHttpRequest) {
  5.     //Creamos una peticion para estos navegadores
  6.     peticion_http = new XMLHttpRequest();
  7.   }
  8.   //Si utilizamos Internet Explorer
  9.   else if(window.ActiveXObject) {
  10.     //Creamos la peticion para este navegador
  11.     peticion_http = new ActiveXObject("Microsoft.XMLHTTP");
  12.   }
  13.  
  14.   // Preparar la funcion de respuesta, es decir, cuando realizamos una peticion, el objeto peticion_http, se queda
  15.   peticion_http.onreadystatechange = muestraContenido;
  16.  
  17.  
  18.   // Realizar peticion HTTP, especificamos mediante la funcion open, el metodo de transferencia de datos. GET
  19.   //o POST, y la direccion a la que realizamos la peticion.
  20.   peticion_http.open('GET', 'http://localhost/blog/public/serviciosAjax/actualizarEstado.php?usuario='+nombre+'&estado='+stat, true);
  21.   //Decimosque no queremos hacer nada mas
  22.   peticion_http.send(null);

Y finalmente el actualizarEstado.php:

Código PHP:
<?php
    
include_once("AgenteBD.php");
    
session_start();
    
    
$bd=new AgenteBD("localhost""root""""blog");
    
$bd->Connect();
    
$consulta="Update estado set estado='".$_GET['estado']."' where codigoAutor='".$_GET['usuario']."'";
    
$bd->Consulta($consulta);
    
?>

A ver si me solucionais el problemilla con estas dos llamadas a conectarUsuario y actualizarEstado.

Edito: para aclarar, el problema viene que hace caso omiso de esas dos llamadas parece ser o que tengo algo mal en ellas que hace que no se ejecuten...

Gracias.
  #2 (permalink)  
Antiguo 20/06/2010, 16:12
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Actualización base de datos con AJAX

Hola

Podrías probar con esto

Código PHP:
Ver original
  1. $log=$_POST['nombre'];
  2.         $estado=1;
  3.         $_SESSION['autor']=$log;
  4.         $_SESSION['usuariolog']=$log;
  5.         $com = $log. ', ' .$estado. ', conectarUsuario('.$log.', '.$estado.');';
  6.         echo $com;

Ahora en js

Código Javascript:
Ver original
  1. var valores = ajax.responseText;
  2. func = valores.split(',')[2];
  3. eval(func);

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 21/06/2010, 10:22
 
Fecha de Ingreso: septiembre-2006
Mensajes: 19
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Actualización base de datos con AJAX

Perdona pero no entiendo exactamente que es lo que estás haciendo... Podrías explicármelo un poco?
  #4 (permalink)  
Antiguo 21/06/2010, 13:05
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Actualización base de datos con AJAX

Hola

A ver

Cita:
//En una variable concatetas todo
$com = $log. ', ' .$estado. ', conectarUsuario('.$log.', '.$estado.');';
//Envia la varible
echo $com;

Ahora en el js

//Recoges la variable
var valores = ajax.responseText;
//Haces un split para sacar el tercer valor conectarUsuario('.$log.', '.$estado.');
func = valores.split(',')[2];
//Con la función eval, ejecutas la función
eval(func);
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 21/06/2010, 15:35
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Actualización base de datos con AJAX

Hola... disculpa mi ignorancia... pero porqué pones el estado en una variable de sesión?, no le veo necesidad... no sería más rápido que hagas el UPDATE dentro del ...

Código:
if($row['existe']==1) {

}
... al autentificar a tu usuario? después haces la redirecíón con JS.
__________________
Quitenme la vida pero no la bebida.

Etiquetas: ajax
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 22:25.