Foros del Web » Programando para Internet » PHP »

problemas con mysql_fetch_array

Estas en el tema de problemas con mysql_fetch_array en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/01/2012, 13:04
Avatar de mitcheldaza  
Fecha de Ingreso: junio-2011
Ubicación: Colombia
Mensajes: 42
Antigüedad: 13 años, 4 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.
  #2 (permalink)  
Antiguo 11/01/2012, 13:44
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: problemas con mysql_fetch_array

tene en cuenta esto: ejemplo
Código PHP:
Ver original
  1. <?
  2. $sql ="SELECT * FROM usuarios WHERE user_id = 1 ";
  3. $res=mysql_query($sql);
  4. if(mysql_num_rows($res)){
  5.     echo 'el usuario exsite, ahora puedo preguntar si esta activo:::';
  6. }else{
  7.     echo 'no hay resultados';
  8. }
  9. ?>

tomalo como referencia, ESTO ES LEY
  #3 (permalink)  
Antiguo 11/01/2012, 16:48
Avatar de mitcheldaza  
Fecha de Ingreso: junio-2011
Ubicación: Colombia
Mensajes: 42
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: problemas con mysql_fetch_array

Pues bien intente hacerlo de esa manera con los mismos resulatdos, lo peor es que ya no tengo idea de que probar para hacerlo funcionar.

Código PHP:
$login="select N_PASS from usuario where N_USER='$user'";
        $seleccion=mysql_query($login, $this->getConexion()) or die ("Problemas de acceso".mysql_error()) ;
        
        if(mysql_num_rows($seleccion)){// existen resultados de la consulta
                
                $resultado=mysql_fetch_array($seleccion);
            
                echo $resultado['N_PASS'];
                echo $resultado['N_USER'];
                echo $resultado['P_ACTIV'];
                //echo "no funca";
                echo $resultado['N_USER'];
                //echo $aprob[3];
            // si la cuanta esta activada
            if($resultado['P_ACTIV']==1){
                
                                if($resultado['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 cuanta esta activada pero el password es incorrecto
                                    //header("Location: index.php?errorpass=si");
                                    
echo "PAssword incorrecto";
                                }
            }
            
            else{
                
// el usuario existe pero la cuenta no esta activada, redireccione
                //header("Location: index.php?erroractivacion=si");
                
echo "La cuenta no esta activada";
                
            }
            
            
        }
        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";
            
        
}
Alguien tiene alguna idea de por que no funciona ???

Etiquetas: mysql, sql, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:30.