Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/01/2012, 13:04
Avatar de mitcheldaza
mitcheldaza
 
Fecha de Ingreso: junio-2011
Ubicación: Colombia
Mensajes: 42
Antigüedad: 12 años, 10 meses
Puntos: 1
Pregunta problemas con mysql_fetch_array

Hay algo que me esta volviendo loco en una consulta sobre una BD Mysql.

Estoy haciendo una sencilla clase para autenticacion de usuarios, en esta se revisa
* el usuario existe en la base de datos
* si existe se revisa que la cuanta este activa
* si la cuenta esta activa se revisa la pertinencia del password pasado por el usuario y el que esta en la BD.

Esta es la funcion que hace las revisiones, como ven existe u metodo de la misma clase que me da la conexion a la BD. todo esto esta dentro de una clase, no se si sea necesario postear toda la clase.
Código PHP:
function acceder(){
        
        $user=$this->getUser();
        $resultado;
        
        
        //select de logeo, REVISAR QUE LA CUENTA HAYA SIDO ACTIVADA 
        $login="select N_PASS from usuario where N_USER='$user'";
        $seleccion=mysql_query($login, $this->getConexion()) or die ("Problemas de acceso".mysql_error()) ;
        
        if($aprob=mysql_fetch_array($seleccion)){// existen resultados de la consulta
                          //intento de imprimir datos para comprobar errores
                $resultado=$aprob['P_ACTIV'];
                echo $resultado;
                echo $aprob['N_PASS'];
                echo $aprob['N_USER'];
                echo $aprob['P_ACTIV'];
                echo $aprob['N_USER'];
                echo $aprob[3];
            // si la cuenta esta activada
            if($aprob['P_ACTIV']==1){
                
                                if($aprob['N_PASS']==$this->getPass()){
                                
                                //entra al sistema, redireccione
                                $_SESSION['usuario_nombre']=$this->getUser();
                                $_SESSION['perfil']=$aprob['N_PERFIL'];
                                ?>
                                        <SCRIPT LANGUAGE='javascript'>
                                        alert('pass e inicio de sesion correcto');
                                        location.href="obras.php";
                                        </SCRIPT>
                                            <?php
                                                                        
}
                                else{
                                    
// el usuario existe, la cuenta esta activada pero el password es incorrecto
                                
header("Location:index.php?errorpass=si");
                                    
                                }
            }
            
            else{
                
// el usuario existe pero la cuenta no esta activada, redireccione
                
header("Location: index.php?erroractivacion=si");
                
                
            }
            
            
        }
        else{
            
// la consulta no genero resultados para logeo, el usuario posiblemente no existe o la activacion tomo demasiado tiempo
            
header("Location: index.php?errorusuario=si");
            
//echo "El usuario no existe en nuestra BD";
            
        
}
        
    }
Este metodo me da la conexion con la BD, el problema no creo este en este metodo es mas estoy casi seguro que no esta aqui pero sin embaro lo pongo, este metodo y este objeto lo uso para dar conexion a toda clase que necesite acceso a la BD. La clase BDconnection a la que se refiere contiene los valores de conexion al servidor de la BD.

Código PHP:
function getConexion(){
        
$this->conexion=new BDconnection();
        
$conex=$this->conexion->connect();
        return 
$conex;
    } 
Mi problema porr mas que he intentado solucionarlo ocurre cuando la ejecucion entra al segundo if el de comprobar si la cuanta esta activada (en la BD si esta activada la columna tiene un valor de 1).

Despues de comprobar que el user se encuentra en la BD (por esto se que la conexion y la consulta es correcta), intento imprimir en pantalla los datos traidos de la BD por medio del Array asociado creado con mysql_fetch_array, sin embargo estos son nulos.
Como se pueden dar cuenta lo intento por medio de la llamada directa al arreglo asociado por medio del nombre de columna en la BD,tambien lo intento por medio de ID numerico del arreglo, lo intento asignando este valor a una variable y despues imprimiendola pero ningun metodo funciona.

Se me olvidaba el dato $aprob['N_PASS'] efectivamente si es reconocido y su salida por pantalla funciona no entiendo por que los demas no.

Gracias a este error ninguna comprobacion posterior puede ser hecha y el script no funciona para nada.
No tengo la menor idea de cual es el error.


PD: hay algo muy raro de lo que me di cuanta y no encuentro la razon, force a que entre la ejecucion hasta el ultimo if y alli imprimi en pantalla los campos que deseaba comporbar, ahora los vaores no son nulos son 0.

Mas confundido que antes estoy, si a alguien le ha pasado esto agradeceria cualquier observacion.