Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2008, 07:31
RdlP
 
Fecha de Ingreso: noviembre-2008
Mensajes: 14
Antigüedad: 15 años, 6 meses
Puntos: 0
El bloque IF no se ejecuta correctamente

Buenas a todos!

Tengo un problema que me trae de cabeza y no entiendo por que se produce ya que aparentemente todo está bien, a ver si alguien me puede decir que es lo que ocurre. Bueno pasó a la explicación del problema.

Lo que trato de hacer es un sistema de registro (como los foros) que necesite activación por mail, esto es, te registras, el sistema te envia un mail con una dirección para que se active tu cuenta.

El problema lo tengo con "validar_cuenta.php". El campo ACTIVO de la BBDD indica si una cuenta está activa o no (1=Activo, 0=No Activo). El caso es que aparentemente este código (que muestro mas abajo) debería realizar lo siguiente:

Obtener las variables $n y $p que se le pasan por la URL (validar_cuenta?n=XXXX&p=XXXXX) luego a partir de de n y p (nick y password) hayar la ID que corresponda a n y p y por ultimo obtener el valor del campo ACTIVO asociado a la ID obtenida.

Vamos ahora a la practica: Si cojo una cuenta que no está activa (ACTIVO = 0) cuando llega al bloque IF lo que hace es: ejecutar las sentencias SQL:

Código PHP:
 $sql "UPDATE usuarios SET activo = 1 WHERE id ='$id'";
      
$result mysql_query($sql); 
y no ejecuta los ECHO, pero si que muestra el ECHO del ELSE, es decir, entra en el IF, ejecuta las sentencias sql, y se pasa al ELSE y ejecuta el ECHO.

he cambiado el IF-ELSE por un SWITCH y nada de nada, el IF-ELSE yo creo que está bien, tiene que ser alguna propiedad de PHP o MySql que se me escapa y no conozco.

Yo lo que quiero es que cuando se le pase un usuario con ACTIVO=0 entre en el IF y ejecute TODO y no se meta en el ELSE, aparentemente eso es lo que debería hacer el código que he escrito, pero no lo hace. ¿Alguien sabe por que?

Código PHP:
<?php
//conexion a la base de datos

//obtiene las variables
$n $_GET['n'];
$p $_GET['p'];

//obtiene el valor del campo ID
$sql_id "SELECT id FROM usuarios WHERE nick='$n' UNION SELECT id FROM usuarios WHERE password='$p'";
$result_id mysql_query($sql_id);
$valor_id mysql_fetch_array($result_id);
echo 
$valor_id["id"];

//Obtiene el valor del campo ACTIVO
$id $valor_id["id"];
$activo "SELECT activo FROM usuarios WHERE id='$id'";
$result_activo mysql_query($activo);
$valor_activo mysql_fetch_array($result_activo);
echo 
$valor_activo["activo"];

if (
$valor_activo["activo"] == 0
 {  
      echo 
"este usuario aún no está activo";
      
$sql "UPDATE usuarios SET activo = 1 WHERE id ='$id'";
      
$result mysql_query($sql);
      echo 
"La cuenta se ha activado correctamente";
      
 }
else
 { 
      echo 
"dfdEste usuario ya está activo";
 }
mysql_close();
?>