Foros del Web » Programando para Internet » PHP »

No me toma en cuenta el switch case dentro de un while

Estas en el tema de No me toma en cuenta el switch case dentro de un while en el foro de PHP en Foros del Web. Hola amigos, tengo un problema; estoy haciendo mi login q es por tipos de usuarios, es decir segun el tipo de usuario q sea debo ...
  #1 (permalink)  
Antiguo 13/05/2009, 22:25
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
No me toma en cuenta el switch case dentro de un while

Hola amigos, tengo un problema; estoy haciendo mi login q es por tipos de usuarios, es decir segun el tipo de usuario q sea debo redireccionarlo a su pagina con su menu correspondiente, esto lo estoy haciendo con switch case. este switch case se encuentra dentro de un while el cual captura la comprobacion de nombre usuario password y el tipo de usuario, lo q me pasa es q no se si no me entra a este while o si no me entra al switch case despues de traer los datos de la consulta sql, he intentado imprimir la consulta sql y no me la muestra. La pagina donde tengo la comprovacion se llama verificar datos, es ahi donde compruebo si el usuario es o no valido, pero me ocurre lo q les comento (obviamente en mi pagina index.php en el form action tengo destinado a q se vaya a la pagina verificar_datos) aqui les dejo mi code para q me echen una ayuda porfa se los agradeceria enormemente ya q me tiene bien urgido est, el code es:

Código PHP:
<?php
ob_start
();
session_start();
include_once(
"conexion.php");
$conn conexion();

if ( !empty(
$_POST['nombre_usuario']) && !empty($_POST['pass'])  )
{
//abro llave de if nombre_usuario y pass distinto a vacio
    
    
if($conn)
    {
//abro llave de if conectado a la bd correctamente
    
        
$auten_usuario"SELECT * FROM usuarios WHERE nombre_usuario ='".$_POST['nombre_usuario']."'";
        
$resultadopg_exec($conn,$auten_usuario);
            echo 
$_POST['nombre_usuario'];//imprimo session nombre_usuario a ver si capta el valor introducido por el usuario
            
if (pg_fetch_array($resultado) )
            {
//abro llave de if q trae resultado de la consulta por nombre de usuario de la bd
            
                
$auten_clave"SELECT * FROM usuarios WHERE pass='".$_POST['pass']."'";//realizo consulta a la bd para comprobar pass
                
echo $_POST['pass'];//imprimo session pass para ver si captura valor introducido por el usuario
                
$resClavepg_exec($conn,$auten_clave);
                if (
pg_fetch_array($resClave))
                {
//abro llave de if q trae resultado de la consulta por la pass del usuario de la bd
                    
$ClaveUser="SELECT tipo_usuario FROM usuarios WHERE nombre_usuario ='".$_POST['nombre_usuario']."' and pass='".$_POST['pass']."'";//consulto a la bd si existe el nombre_usuario y la pass
                    
echo $_POST['nombre_usuario']."----".$_POST['pass'];//imprimo variable session nombre_usuario y pass 
                    
                    
$resCUpg_exec($conn,$ClaveUser);
                    
                    while(
$row pg_fetch_array($resCU))
                    {
//abro llave de while q contendra switch case
                    
                        
switch ($row[0])
                        {
//abro llave de switch
                        
                            
case 1:
                            
                        
$segundo=" SELECT
            usuarios.nombre_usuario, usuarios.tipo_usuario,
             nivel_acceso.descripcion
 FROM usuarios 
 JOIN nivel_acceso  ON usuarios.tipo_usuario = nivel_acceso.tipo_usuario
 WHERE
             usuarios.nombre_usuario = '"
.$_POST['nombre_usuario']."' 
             AND usuarios.pass = '"
.$_POST['pass']."'";
                                        
$resultado_segundo pg_exec ($conn$segundo);
                                        echo 
$segundo;
                                        
                                        while(
$row pg_fetch_array($resultado_segundo))
                                        {
//abro llave while q destina a usuario administrador
                                        
                                            
session_start();
                                            echo 
$_SESSION['usuario']=$row[0];
                                            echo 
$_SESSION['estado']='ok';                
                                            echo 
$_SESSION['tipo']='ADMINISTRADOR';
                                            
header("Location:prueba.php");
                                        
                                        }
// cierro llave while q destina a usuario administrador
                                        
                                        
exit();//paro ejecucion del while q destina a usuario administrador
                                        
break;// break del case 1
                                        
                                        
                        
                        
}//cierro llave de switch
                    
                    
}//cierro llave de while q contendra switch case
                
                
}//cierro llave de if q trae resultado de la consulta por la pass del usuario de la bd
                
                
else
                            { 
                            
header("Location:index.php?login=nopass");
                            exit();
                            }
            
            }
//cierro llave de if q trae resultado de la consulta por nombre de usuario de la bd
            
            
else
                    { 
                    
header("Location:index.php?login=nouser");
                    exit();
                    }
    
    }
//cierro llave de if conectado a la bd correctamente

}// cierro llave de if nombre_usuario y pass distinto a vacio

else
    {
        
header("Location:index.php?login=noset");
    }
?>
ese es mi code como les dije no se pq no me entra al while y/o al switch case porfavor ruego por su ayuda amigos.... de antemano gracias... bye.
  #2 (permalink)  
Antiguo 13/05/2009, 22:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Es por ese ob_start() que tienes al principio. Estás capturando la salida.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 13/05/2009, 23:07
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No me toma en cuenta el switch case dentro de un while

Hola David, ok saque el ob_start(), pero el index.php al introducir el usuario y la pass me lleva a la pagina verificar datos una vez q el usuario y el pass existe en la bd, pero solo se me queda en la pagina verificar_datos.php y no me destina a la pagina q le corresponde al usuario q introduje (el usuario q introduje y el pass y el tipo de usuario correspondiente a este usuario existe en la bd), no se pq no me esta entrando al siclo while y al switch case.... en q estare fallando??? porfavor ruego su ayuda amigos de verdad se los ruego!! de antemano gracias!!!!!
  #4 (permalink)  
Antiguo 13/05/2009, 23:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

¿El seguimiento que estás haciendo con los echo, hasta qué punto llegan a imprimirse?.

Imprime también los valores de $_POST['nombre_usuario'] y $_POST['pass']
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 13/05/2009, 23:19
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No me toma en cuenta el switch case dentro de un while

hola David, el seguimiento me imprime hasta el if (pg_fetch_array($resClave)), aqui te pego el code hasta donde me imprime el seguimiento el code es:
Código PHP:
session_start();
include_once(
"conexion.php");
$conn conexion();

if ( !empty(
$_POST['nombre_usuario']) && !empty($_POST['pass'])  )
{
//abro llave de if nombre_usuario y pass distinto a vacio
    
    
if($conn)
    {
//abro llave de if conectado a la bd correctamente
    
        
$auten_usuario"SELECT * FROM usuarios WHERE nombre_usuario ='".$_POST['nombre_usuario']."'";
        
$resultadopg_exec($conn,$auten_usuario);
        
//    echo $_POST['nombre_usuario'];//imprimo session nombre_usuario a ver si capta el valor introducido por el usuario
            
if (pg_fetch_array($resultado) )
            {
//abro llave de if q trae resultado de la consulta por nombre de usuario de la bd
            
                
$auten_clave"SELECT * FROM usuarios WHERE pass='".$_POST['pass']."'";//realizo consulta a la bd para comprobar pass
            //    echo $_POST['pass'];//imprimo session pass para ver si captura valor introducido por el usuario
                
$resClavepg_exec($conn,$auten_clave);
                if (
pg_fetch_array($resClave))
                {
//abro llave de if q trae resultado de la consulta por la pass del usuario de la bd
                    
$ClaveUser="SELECT tipo_usuario FROM usuarios WHERE nombre_usuario ='".$_POST['nombre_usuario']."' and pass='".$_POST['pass']."'";//consulto a la bd si existe el nombre_usuario y la pass
                    
echo $_POST['nombre_usuario']."----".$_POST['pass'];//imprimo variable session nombre_usuario y pass 
hasta ahi lo puedo seguir bien imprimiendo las variables, pero desde aca en adelante no logro seguir el code ya q no me imprime las variables ni de la consulta sql ni de las varias $_POST['nombre_usuario'] $_POST['pass']

//Code que no logro seguir es :
Código PHP:
$resCUpg_exec($conn,$ClaveUser);
                    
                    while(
$row pg_fetch_array($resCU))
                    {
//abro llave de while q contendra switch case
                    
                        
switch ($row[0])
                        {
//abro llave de switch
                        
                            
case 1:
                            
                        
$segundo=" SELECT
            usuarios.nombre_usuario, usuarios.tipo_usuario,
             nivel_acceso.descripcion
 FROM usuarios 
 JOIN nivel_acceso  ON usuarios.tipo_usuario = nivel_acceso.tipo_usuario
 WHERE
             usuarios.nombre_usuario = '"
.$_POST['nombre_usuario']."' 
             AND usuarios.pass = '"
.$_POST['pass']."'";
                                        
$resultado_segundo pg_exec ($conn$segundo);
                                        echo 
$segundo;
                                        
                                        while(
$row pg_fetch_array($resultado_segundo))
                                        {
//abro llave while q destina a usuario administrador
                                        
                                            
session_start();
                                            echo 
$_SESSION['usuario']=$row[0];
                                            echo 
$_SESSION['estado']='ok';                
                                            echo 
$_SESSION['tipo']='ADMINISTRADOR';
                                            
header("Location:prueba.php");
                                        
                                        }
// cierro llave while q destina a usuario administrador
                                        
                                        
exit();//paro ejecucion del while q destina a usuario administrador
                                        
break;// break del case 1
                                        
                                        
                        
                        
}//cierro llave de switch
                    
                    
}//cierro llave de while q contendra switch case
                
                
}//cierro llave de if q trae resultado de la consulta por la pass del usuario de la bd
                
                
else
                            { 
                            
header("Location:index.php?login=nopass");
                            exit();
                            }
            
            }
//cierro llave de if q trae resultado de la consulta por nombre de usuario de la bd
            
            
else
                    { 
                    
header("Location:index.php?login=nouser");
                    exit();
                    }
    
    }
//cierro llave de if conectado a la bd correctamente

}// cierro llave de if nombre_usuario y pass distinto a vacio

else
    {
        
header("Location:index.php?login=noset");
        exit();
    } 
este trozo de code no logro seguirlo en q estare fallando??? de antemano gracias ....RUEGO SU AYUDA AMIGOS!!!!!! .... bye.
  #6 (permalink)  
Antiguo 13/05/2009, 23:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Puedes usar pg_result_error() para saber si hugo algún error en la consulta:
http://www.php.net/manual/es/functio...sult-error.php

P.S.: ¿La función pg_exec la definiste tú?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 13/05/2009, 23:48
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No me toma en cuenta el switch case dentro de un while

Hola David y sorry por molestar tanto, si la funcion pg_exec la implente yo, en cuanto al pg_get_result lo implemente de la siguiente forma y no me funciona:
Código PHP:
switch ($row[0])
                        {
//abro llave de switch
                        
                            
case 1:
                            
                        
$segundo=" SELECT
            usuarios.nombre_usuario, usuarios.tipo_usuario,
             nivel_acceso.descripcion
 FROM usuarios 
 JOIN nivel_acceso  ON usuarios.tipo_usuario = nivel_acceso.tipo_usuario
 WHERE
             usuarios.nombre_usuario = '"
.$_POST['nombre_usuario']."' 
             AND usuarios.pass = '"
.$_POST['pass']."'";
                                        
$resultado_segundo pg_get_result ($conn$segundo);//AQUI IMPLEMENTE EL pg_get_result
                                        
echo pg_result_error ($resultado_segundo);//AQUI ESTOY IMPRIMIENDO EL pg_result PARA VER SI HAY ERROR EN LA CONSULTA
                                        
                                        
while($row pg_fetch_array($resultado_segundo))
                                        {
//abro llave while q destina a usuario administrador
                                        
                                            
session_start();
                                            echo 
$_SESSION['usuario']=$row[0];
                                            echo 
$_SESSION['estado']='ok';                
                                            echo 
$_SESSION['tipo']='ADMINISTRADOR';
                                            
header("Location:prueba.php");
                                        
                                        }
// cierro llave while q destina a usuario administrador
                                        
                                        
exit();//paro ejecucion del while q destina a usuario administrador
                                        
break;// 
como ves lo implemente pero no me imprime nada indicandome si fallo o no mi consulta sql, en q estoy fallando??? porfavor de verdad ruego por su ayuda amigos .... esto me tiene urgidicimo porfavor guienme (gracias David por tu ayuda porfa ayudaaaa) ayuda amigos se los ruego!!!!! de antemano gracias... bye
  #8 (permalink)  
Antiguo 13/05/2009, 23:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Colócalo donde asignas $resCU que es donde puede haber el problema.

Además, comprueba el valor de retorno (las función pg_execute retorna FALSE en caso de fallo)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 14/05/2009, 18:34
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No me toma en cuenta el switch case dentro de un while

Hola David, claro me manda warning :

Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs\login\verifica_datos.p hp on line 28

logre imprimir el resultado de la consulta y claro me manda ese error, en el pg_fetch_array despues de la variable q contiene el resultado de la consulta sql a dicha variable le paso como parametro tb el 0 pero me segue mandando el mismo error , el trozo de codigo es el siguiente:
Código PHP:
$ClaveUser="SELECT tipo_usuario FROM usuarios WHERE nombre_usuario ='$_POST[nombre_usuario]' and pass='$_POST[pass]'";//consulto a la bd si existe el nombre_usuario y la pass
                    
echo $_POST['nombre_usuario']."----".$_POST['pass'];//imprimo variable session nombre_usuario y pass 
                    
                    
$resCUpg_get_result($conn,$ClaveUser);
                    echo 
pg_result_error ($ClaveUser);
                    while(
$row pg_fetch_array($resCU0))//ACA EN ESTA LINEA LE PASO EL 0 COMO PARAMETRO 
le paso el 0 como parametro pero aun asi me sigue mandando el mismo error q puse al principio el Warning, como lo puedo arreglar???, ya q en las otras consultas dentro del mismo archivo las tengo de igual forma y funcionan bien, q tengo agregar/quitar en esa linea del pg_fetch_array para q me tome bien la consulta y me devuelva los datos q nesecito para utilizarlos en el switch case, porfavor amigos ruego me ayuden/guien, de antemano gracias... bye
  #10 (permalink)  
Antiguo 14/05/2009, 19:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Lo que probablemente esté pasando es que la consulta genera un error. A la función pg_result_error debes pasarle como parámetro $resCU para que te indique cuál es el error que se está produciendo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 15/05/2009, 13:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No me toma en cuenta el switch case dentro de un while

Hola David, probe imprimiendo la variable $ResCU asi:
Código PHP:
$ClaveUser="SELECT tipo_usuario FROM usuarios WHERE nombre_usuario ='$_POST[nombre_usuario]' and pass='$_POST[pass]'";//consulto a la bd si existe el nombre_usuario y la pass
                    
echo $_POST['nombre_usuario']."----".$_POST['pass'];//imprimo variable session nombre_usuario y pass 
                    
                    
$resCUpg_get_result($conn,$ClaveUser);
                    echo 
pg_result_error ($resCU);//AQUI ESTOY IMPRIMIENDO LA VARIABLE
                    
                    
while($row pg_fetch_array($resCU)) 
y al imprimir me muestra este error:

Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs\login\verifica_datos.p hp on line 29

donde la linea 29 es esta:
Código PHP:
            while($row pg_fetch_array($resCU)) 
lo q no entiendo es pq me sale ese error si las demas consultas dentro del codigo las tengo de la misma manera y me funcionan a la perfeccion, q parametro mas debo pasarle en la linea 29 donde esta el while, o como puedo lograr q me muestre el error de manera mas concreta para poder solucionarlo???? porfavor amigos ruego su ayuda porfavor.... de antemano gracias.... y ayuda porfaaaaaaa..... bye.
  #12 (permalink)  
Antiguo 15/05/2009, 13:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Es que no estás usando pg_get_result() de forma adecuada. Debes usar pg_send_query() para enviar la consulta, después, a pg_get_result() le pasas como parámetro la conexión. FInalmente, ahí sí podrás obtener con pg_result_error() cuál es el error en la consulta.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 15/05/2009, 14:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No me toma en cuenta el switch case dentro de un while

Hola David, pucha me da lata seguir molestando, pero aun no soluciono el problema ahora lo hice como me dijiste tu de esta manera:
Código PHP:
$ClaveUser="SELECT tipo_usuario FROM usuarios WHERE nombre_usuario ='".$_POST['nombre_usuario']."' and pass='".$_POST['pass']."'";//consulto a la bd si existe el nombre_usuario y la pass
                    
echo $_POST['nombre_usuario']."----".$_POST['pass'];//imprimo variable session nombre_usuario y pass 
                    
                    
$resCUpg_send_query($conn$ClaveUser);
                     
pg_get_result ($conn);
                     echo 
pg_result_error ($resCU);
                     echo 
$ClaveUser;
                    
                    while(
$row pg_fetch_array($resCU)) 
pero me sigue mandando este error :

Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs\login\verifica_datos.p hp on line 31

como lo debo hacer??? de q manera debo enviar la consulta y luego imprimir el resultado para asi poder encontrar el error, ya q de todas las maneras q me haz dicho lo he hecho y me sigue imprimiendo el mismo mensaje, pero no logro encontrar donde esta el error de la consulta :S, porfavor me podrias dar un ejemplo en cuanto a codigo??? o en q estoy fallando al tratar de imprimir elk resultado devuelto por la consulta??? porfavor ayuda amigos!!!! esto me tiene re urgido agradeceria muchisimo su ayuda!!! de antemano gracias... bye

PD: no lo hago con el afan de molestar sino q solo trato de solucionar este problema q me tiene truncadicimo!!!! de antemano gracias nuevamente .... bye
  #14 (permalink)  
Antiguo 15/05/2009, 15:05
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Prueba así y dime qué salida te muestra:
Código php:
Ver original
  1. $resCU = pg_send_query($conn, $ClaveUser);
  2. $resultado = pg_get_result($conn);
  3. echo pg_result_error ($resultado);
Porque yo sigo pensando que hay un error en la consulta.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 15/05/2009, 15:39
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No me toma en cuenta el switch case dentro de un while

Hola David, probe, y ahora no me imprime ningun error, pero no se pq no me entra al switch ya q al rescatar el tipo de usuario desde la bd con mi consulta si me lo trae, pero el codigo no sigue trabajando dentro del case 1 mira mi codido lo tengo asi ahora:
Código PHP:
$ClaveUser="SELECT tipo_usuario FROM usuarios WHERE nombre_usuario ='".$_POST['nombre_usuario']."' and pass='".$_POST['pass']."'";//consulto a la bd si existe el nombre_usuario y la pass
                    
echo $_POST['nombre_usuario']."----".$_POST['pass'];//imprimo variable session nombre_usuario y pass 
                    
                    
$resCUpg_send_query($conn$ClaveUser);
                    
$resultado_prueba pg_get_result($conn);
                     echo 
pg_result_error ($resultado_prueba);
                    
                    while(
$row pg_fetch_array($resultado_prueba))
                    {
//abro llave de while q contendra switch case
                    
echo $row[0];//ACA ESTOY IMPRIMIENDO EL TIPO DE USUARIO Q TRAIGO DE LA BASE DE DATOS Q ES ADMINISTRADOR Y SI ME LO TRAE PQ SI ME IMPRIME EL VALOR
                        
switch ($row[0])
                        {
//abro llave de switch
                        
                            
case 1:
                            
                        
$segundo=" SELECT
            usuarios.nombre_usuario, usuarios.tipo_usuario,
             nivel_acceso.descripcion
 FROM usuarios 
 JOIN nivel_acceso  ON usuarios.tipo_usuario = nivel_acceso.tipo_usuario
 WHERE
             usuarios.nombre_usuario = '"
.$_POST['nombre_usuario']."' 
             AND usuarios.pass = '"
.$_POST['pass']."'";
                                        
$resultado_segundo pg_send_query ($conn$segundo);
                                        
$resultado_prueba2=pg_get_result ($conn);
                                        echo 
pg_result_error ($resultado_prueba2);
                                        echo 
$resultado_prueba2;
                                        
                                        while(
$row pg_fetch_array($$resultado_prueba2))
                                        {
//abro llave while q destina a usuario administrador
                                        
                                            
session_start();
                                            echo 
$_SESSION['nombre_usuario']=$row[0];
                                            echo 
$_SESSION['estado']='ok';                
                                            echo 
$_SESSION['tipo']='ADMINISTRADOR';
                                            
header("Location:prueba.php");
                                        
                                        }
// cierro llave while q destina a usuario administrador
                                        
                                        
exit();//paro ejecucion del while q destina a usuario administrador
                                        
break;// break del case 1 
pero no me entra al case no se pq no se q esta mal no se pq no entra al case 1 para hacer lo siguiente q corresponde a este condigo no me esta entrando:
Código PHP:
switch ($row[0])
                        {
//abro llave de switch
                        
                            
case 1:
                            
                        
$segundo=" SELECT
            usuarios.nombre_usuario, usuarios.tipo_usuario,
             nivel_acceso.descripcion
 FROM usuarios 
 JOIN nivel_acceso  ON usuarios.tipo_usuario = nivel_acceso.tipo_usuario
 WHERE
             usuarios.nombre_usuario = '"
.$_POST['nombre_usuario']."' 
             AND usuarios.pass = '"
.$_POST['pass']."'";
                                        
$resultado_segundo pg_send_query ($conn$segundo);
                                        
$resultado_prueba2=pg_get_result ($conn);
                                        echo 
pg_result_error ($resultado_prueba2);
                                        echo 
$resultado_prueba2;
                                        
                                        while(
$row pg_fetch_array($$resultado_prueba2))
                                        {
//abro llave while q destina a usuario administrador
                                        
                                            
session_start();
                                            echo 
$_SESSION['nombre_usuario']=$row[0];
                                            echo 
$_SESSION['estado']='ok';                
                                            echo 
$_SESSION['tipo']='ADMINISTRADOR';
                                            
header("Location:prueba.php");
                                        
                                        }
// cierro llave while q destina a usuario administrador
                                        
                                        
exit();//paro ejecucion del while q destina a usuario administrador
                                        
break;// break del case 1 
q estoy haciendo mal??? porfavor ayuda amigos!!!!.... de antemano gracias.... bye
  #16 (permalink)  
Antiguo 15/05/2009, 15:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Imprime $row[0] para saber qué valor tiene.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #17 (permalink)  
Antiguo 15/05/2009, 16:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: No me toma en cuenta el switch case dentro de un while

Hola David, claro Imprimo el $row[0] q es el q me rescata el tipo de usuario desde la bd (en este caso estoy rescatando el tipo de usuario tipo ADMINISTRADOR),
Código PHP:
while($row pg_fetch_array($resultado_prueba))
                    {
//abro llave de while q contendra switch case
                    
echo $row[0];//ACA ESTOY IMPRIMIENDO EL $row[0] q es el tipo de usuario ADMINISTRADOR eso lo traigo con la consulta sql como se ve en el codigo
                        
switch ($row[0])
                        {
//abro llave de switch
                        
                            
case 1:
                            
                        
$segundo=" SELECT
            usuarios.nombre_usuario, usuarios.tipo_usuario,
             nivel_acceso.descripcion
 FROM usuarios 
 JOIN nivel_acceso  ON usuarios.tipo_usuario = nivel_acceso.tipo_usuario
 WHERE
             usuarios.nombre_usuario = '"
.$_POST['nombre_usuario']."' 
             AND usuarios.pass = '"
.$_POST['pass']."'";
                                        
$resultado_segundo pg_send_query ($conn$segundo);
                                        
$resultado_prueba2=pg_get_result ($conn);
                                        echo 
pg_result_error ($resultado_prueba2);
                                        echo 
$resultado_prueba2;
                                        
                                        while(
$row pg_fetch_array($$resultado_prueba2))
                                        {
//abro llave while q destina a usuario administrador
                                        
                                            
session_start();
                                            echo 
$_SESSION['nombre_usuario']=$row[0];
                                            echo 
$_SESSION['estado']='ok';                
                                            echo 
$_SESSION['tipo']='ADMINISTRADOR';
                                            
header("Location:prueba.php");
                                        
                                        }
// cierro llave while q destina a usuario administrador
                                        
                                        
exit();//paro ejecucion del while q destina a usuario administrador
                                        
break;// break del case 1 
y claro me lo imprime, lo imprimo una linea antes del switch ya q si lo imprimo dentro del switch no me imprime nada, no me imprime nada de lo q kiera imprimir dentro ndel switch q puede ser??? q esta mal??? como puedo probar??? porfavor amigos ayuda!!!!!.... de antema
  #18 (permalink)  
Antiguo 15/05/2009, 16:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Si el valor de $row[0] es diferente de 1 lógicamente no va a imprimir nada dentro de ese bloque case .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #19 (permalink)  
Antiguo 15/05/2009, 16:49
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
OK David gracias por tu ayuda lo arreglo y te comento!!!!!! gracias.... bye

Hola David, bueno probe y cambie el tipo de usuario a numerico en mi bd, pero ahora no me imprime el $row[0] y me tira el siguiente error:

rmedina----yo2bik1Resource id #7// ahi es donde yo estoy imprimiendo el nombre_usuario y la pass y tb estoy imprimiendo el $row[0] q me trae el valor 1 para utlizarlo en el switch, pero en vez de imprimirme el valo 1 me imprime Resource id #7... por que me ocurre esto??? si yo probe la consulta directamente en la bd y si me funciona bien??? y el otro error q me manda ahora es :

Warning: pg_fetch_array() expects parameter 1 to be resource, null given in C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs\login\verifica_datos.p hp on line 50

ese, q puedo hacer?? aca dejo mi codigo:
Código PHP:
$ClaveUser="SELECT tipo_codigo FROM usuarios WHERE nombre_usuario ='".$_POST['nombre_usuario']."' and pass='".$_POST['pass']."'";//consulto a la bd si existe el nombre_usuario y la pass
                    
echo $_POST['nombre_usuario']."----".$_POST['pass'];//imprimo variable session nombre_usuario y pass 
                    
                    
$resCUpg_send_query($conn$ClaveUser);
                    
$resultado_prueba pg_get_result($conn);
                     echo 
pg_result_error ($resultado_prueba);
                    
                    while(
$row pg_fetch_array($resultado_prueba))
                    {
//abro llave de while q contendra switch case
                    
echo $row[0];//aca estoy imprimiendo el tipo de usuario q me trae la consulta el tipo de usuario es 1 (administrador)
                        
switch ($row[0])
                        {
//abro llave de switch
                        
                            
case 1:
                            
                        
$segundo=" SELECT
            usuarios.nombre_usuario, usuarios.tipo_codigo
 FROM usuarios 
 JOIN tipo_usuario  ON usuarios.tipo_codigo = tipo_usuario.tipo_codigo
 WHERE
             usuarios.nombre_usuario = '"
.$_POST['nombre_usuario']."' 
             AND usuarios.pass = '"
.$_POST['pass']."'";
                                        
$resultado_segundo pg_send_query ($conn$segundo);
                                        
$resultado_prueba2=pg_get_result ($conn);
                                        echo 
pg_result_error ($resultado_prueba2);
                                        echo 
$resultado_prueba2;
                                        
                                        while(
$row pg_fetch_array($$resultado_prueba2))// y esta es la linea 50 donde me marca el warning
                                        
{//abro llave while q destina a usuario administrador
                                        
                                            
session_start();
                                            echo 
$_SESSION['nombre_usuario']=$row[0];
                                            echo 
$_SESSION['estado']='ok';                
                                            echo 
$_SESSION['tipo']='1';
                                            
header("Location:prueba.php");
                                        
                                        }
// cierro llave while q destina a usuario administrador
                                        
                                        
exit(); 
como puedo solucionar esto?? porfavor amigos ruego su ayuda de verdad!!!! .... de antemano gracias y sorry todas las molestias... bye

GRACIAS POR TODO DAVID!!!!ufff, lo logre jojojojo de verdad muchas gracias por tu tiempo y pasiencia sin tu ayuda aun hubiece estado cabeceandome Gracias no sabes cuan agradecido ufff me sake un peso de encima.... gracias y hasta pronto (ojala q esto sea a lo lejos) LOL!!!! .... gracias totales.....jajajaja .... TEMA CERRADO...bye

Última edición por GatorV; 16/05/2009 a las 20:07
  #20 (permalink)  
Antiguo 16/05/2009, 17:14
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: No me toma en cuenta el switch case dentro de un while

Me alegra que lo hayas solucionado.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 14:16.