Foros del Web » Programando para Internet » PHP »

Problema con una función

Estas en el tema de Problema con una función en el foro de PHP en Foros del Web. Muy buenas. No me termino de acostumbrar en el uso de las funciones, sobre todo a la hora de devolver un valor. He creado una ...
  #1 (permalink)  
Antiguo 20/10/2010, 01:42
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Información Problema con una función

Muy buenas. No me termino de acostumbrar en el uso de las funciones, sobre todo a la hora de devolver un valor. He creado una función para que compruebe si el usuario que está conectado es administrador, si lo es que devuelva 0, si no 1. Como también se pueden conectar departamentos tiene que comprobar que está conectado con un departamento, y que simplemente lo diga y devuelva un valor. Os dejo la función.

Código PHP:
function isAdmin(){
    
$user_perm $_SESSION['photogo'];
    
$query_perm mysql_query("SELECT admin_permission FROM pg_admin WHERE admin_usser = '$user_perm' ");
    
$valid_perm mysql_num_rows($query_perm);
    if(
$valid_perm != 0){
        
$value_perm mysql_fetch_assoc($query_perm);
        if(
$value_perm['admin_permission'] == 0){
            
$permiso 0;
        }else{
            
$permiso 1;
        }
    }else{
        
$permiso 2;
        echo 
"estás conectado con un departamento";
    }
    
    return 
$permiso;

El problema que tengo es que no me devuelve el valor de $permiso, y ya me estoy haciendo un lío ya que no se si el return lo tengo que poner dentro del if, fuera, al final de la función.. no se.. XD !!

Un saludo y gracias :) !
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #2 (permalink)  
Antiguo 20/10/2010, 02:12
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Problema con una función

Tú durante la ejecución de la función alimentas $permiso, y al final devuelves $permiso con el valor que le corresponda dependiendo de la condiciones.

Pero si devuelves 0 PHP puede considerarlo como false. Por lo que si haces un

Código PHP:
echo $permiso 
puede que no veas el cero.

Puedes devolver cadenas "ok", "no_ok", "departamento" que a lo mejor es más seguro.
  #3 (permalink)  
Antiguo 20/10/2010, 02:40
 
Fecha de Ingreso: septiembre-2010
Ubicación: Malaga
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Problema con una función

Si la consulta no devuelve ninguna fila, mysql_num_rows provocara un Warning, y si lo tienes desactivados, pasa inadvertido el problema.
Puedas hacerlo en modo silenciosos, que no devuelva warning con
@mysql_num_rows($query_perm)

El tema de return, lo mas recomendable es ponerlo al final
  #4 (permalink)  
Antiguo 20/10/2010, 02:56
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con una función

Cita:
Iniciado por cluster28 Ver Mensaje
Tú durante la ejecución de la función alimentas $permiso, y al final devuelves $permiso con el valor que le corresponda dependiendo de la condiciones.

Pero si devuelves 0 PHP puede considerarlo como false. Por lo que si haces un

Código PHP:
echo $permiso 
puede que no veas el cero.

Puedes devolver cadenas "ok", "no_ok", "departamento" que a lo mejor es más seguro.
Cita:
Iniciado por Oasis8 Ver Mensaje
Si la consulta no devuelve ninguna fila, mysql_num_rows provocara un Warning, y si lo tienes desactivados, pasa inadvertido el problema.
Puedas hacerlo en modo silenciosos, que no devuelva warning con
@mysql_num_rows($query_perm)

El tema de return, lo mas recomendable es ponerlo al final
Muchísimas gracias a los dos, lo tengo en cuenta. La verdad que pensé sobre ponerle ok y no_ok pero sinceramente no se porque no lo hice, será que ando medio dormido ! jajaja

Muchas gracias :) !
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #5 (permalink)  
Antiguo 20/10/2010, 05:22
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problema con una función

Sigo teniendo problemas a la hora de coger el valor de la variable :S

Cambié un poco la función, la tengo así ahora:

Código PHP:
function isAdmin(){
    
$user_perm $_SESSION['photogo'];
    
$query_perm mysql_query("SELECT * FROM pg_dpto WHERE dpto_name = '$user_perm'");
    
$num_perm = @mysql_num_rows($query_perm);
    if(
$num_perm == 0){
        
        
// Comprobación que tiene permiso de admin (0)
        
$adm_query mysql_query("SELECT * FROM pg_admin WHERE admin_usser = '$user_perm' ");
        
$adm_perm mysql_fetch_assoc($adm_query);
        if(
$adm_perm['admin_permission'] == 0){
            
$permiso "si";
        }else{
            
$permiso "no";
        }        
    }
    
    return 
$permiso;

Y luego la llamo así:

Código PHP:
isAdmin();
echo 
"<h1>¿Tiene permiso? ".$permiso."</h1>"
¿Qué puede ser?

Gracias !!
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #6 (permalink)  
Antiguo 20/10/2010, 05:31
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Problema con una función

Cita:
Iniciado por Jask Ver Mensaje
Código PHP:
isAdmin();
echo 
"<h1>¿Tiene permiso? ".$permiso."</h1>"
isAdmin(); devuelve un valor que tienes que asociarlo a una variable

Código PHP:
$permiso=isAdmin();
echo 
"<h1>¿Tiene permiso? ".$permiso."</h1>"
la variable $permiso no es la misma

o (debería funcionar, creo que no lo he probado nunca)

Código PHP:
echo "<h1>¿Tiene permiso? ".isAdmin()."</h1>"
  #7 (permalink)  
Antiguo 21/10/2010, 02:07
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Exclamación Respuesta: Problema con una función

Cita:
Iniciado por cluster28 Ver Mensaje
isAdmin(); devuelve un valor que tienes que asociarlo a una variable

Código PHP:
$permiso=isAdmin();
echo 
"<h1>¿Tiene permiso? ".$permiso."</h1>"
la variable $permiso no es la misma

o (debería funcionar, creo que no lo he probado nunca)

Código PHP:
echo "<h1>¿Tiene permiso? ".isAdmin()."</h1>"
Ajá, eso no lo tenía en cuenta :)

Muchas gracias !!!! me funcionó de maravilla.
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?

Etiquetas: funciones, function, return
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 04:36.