Hola RdlP,
Primero checa tu consulta no necesitas hacer el UNION, es redundante, despues trata de castear el valor, yo dejaria tu script asi:
Código php:
Ver original<?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' AND password='$p' LIMIT 1";
echo $valor_id['id'];
echo $valor_id['activo'];
$id = $valor_id['id'];
$activo = (int) $valor_id['activo'];
if ($activo == 0)
{
echo "este usuario aún no está activo";
$sql = "UPDATE usuarios SET activo = 1 WHERE id ='$id'";
echo "La cuenta se ha activado correctamente";
}
else
{
echo "dfdEste usuario ya está activo";
}
?>
Saludos.