Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/06/2010, 11:41
nachin86
 
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.