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

me dice esto: array(2) { [0]=> string(1) "1" ["activo"]=> string(1) "1" }

el caso es que la base de datos tiene los siguientes campos:
id
nick
PASSWORD
nombre
email
activo

no tendría que salirme un array(6) en vez de un array(2)? :s

Saludos!

Edito:

Modifiqué el código como dijo GatorV (lo de poner los SELECT juntos)

Código PHP:
<?php
//Aquí la conexión a la base de datos

$n $_GET['n'];
$p $_GET['p'];

$sql_id "SELECT id, activo FROM usuarios WHERE nick='$n' UNION SELECT id, activo FROM usuarios WHERE password='$p'";
$result_id mysql_query($sql_id);
$valor_id mysql_fetch_array($result_id);
echo 
$valor_id['id'];
echo 
$valor_id['activo'];

$id $valor_id['id'];
if (
$valor_id['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();
?>
(sigue sin ir xD)

con la modificación esta y poniendo el var_dump sale:

array(4) { [0]=> string(1) "2" ["id"]=> string(1) "2" [1]=> string(1) "0" ["activo"]=> string(1) "0" }

el caso es que ACTIVO no es un String, en la base de datos está puesto como un INT (activo int(1))
al igual que ID es un BIGINT (id bigint(7)) aunque igual php los pasa a string para poder mostrarlos xD

Mirad que cosa mas rara :s, con este fragmeto de codigo:

Código PHP:
var_dump($valor_id);
echo 
"<br>";
$id $valor_id['id'];
if (
$valor_id['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";
 }
var_dump($valor_id); 
se supone que deberia imprimir en el primer var_dump en activo un 0 y en el segundo un 1

pues me muestra esto:

array(4) { [0]=> string(1) "2" ["id"]=> string(1) "2" [1]=> string(1) "1" ["activo"]=> string(1) "1" }
array(4) { [0]=> string(1) "2" ["id"]=> string(1) "2" [1]=> string(1) "1" ["activo"]=> string(1) "1" }

vamos que sale en los 2 ACTIVO=1 y antes de ejecutar el script yo cambio a 0 manualmente el valor de ACTIVO desde la BBDD :s

Última edición por RdlP; 07/11/2008 a las 04:18