Foros del Web » Programando para Internet » PHP »

Problema con variables

Estas en el tema de Problema con variables en el foro de PHP en Foros del Web. Hola, tengo un problema con una variable que no logro saber porqué no aparece: Tengo el siguiente código en el index. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: ...
  #1 (permalink)  
Antiguo 30/08/2011, 11:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 27
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Problema con variables

Hola, tengo un problema con una variable que no logro saber porqué no aparece:

Tengo el siguiente código en el index.

Código PHP:
Ver original
  1. $url = limpiar_ruta_entrante($_GET['url']);
  2.     $ruta = explode('/', $url);

Con esto obtengo de una url como http://web.com/roberto y $ruta[0] vendría a ser: roberto

Luego tengo una función en otro archivo previamente llamado con un include, y es esta:


Código PHP:
Ver original
  1. function buscar_perfil($abuscar){
  2.    
  3.         global $plantillas;
  4.        
  5.         if(!is_array($plantillas[$abuscar])){
  6.  
  7. @           $encontrado = db_query('SELECT userID, username, nombre FROM usuarios WHERE username = "'.$abuscar.'" LIMIT 1', __FILE__, __LINE__);
  8.             $resultados = mysql_num_rows($encontrado);
  9.            
  10.             if($resultados == 1){
  11.                 $row = mysql_fetch_array($encontrado);
  12.  
  13.                 return $user_perfil = array(
  14.                     'id'        => $row['userID'],
  15.                     'username'  => $row['username'],
  16.                     'nombre'    => $row['nombre'],
  17.                 );
  18.  
  19.             } else {
  20.                 return $user_perfil['id'] = 0;
  21.             }
  22.         } else {
  23.             return $user_perfil['id'] = 0;
  24.         }
  25.     }

Esta función detecta si la url (/roberto) es de algún usuario que no sea una plantilla ($plantillas ya definidas).
Si es false me tira solo $user_perfil['id'] = 0; en caso contrario me tendría que tirar el array $user_perfil con los datos obtenidos de la query, pero no sucede así.

Este array luego lo uso para un require y llamar al perfil del usuario (en este caso el username roberto).


No encuentro cual es la falla al no regresarme el array $user_perfil con los datos en esa función.
Gracias por la ayuda.
  #2 (permalink)  
Antiguo 30/08/2011, 11:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con variables

¿De casualidad estás depurando algún posible error?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/08/2011, 12:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 27
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con variables

No pateketrueke, allí en la función, si ingreso: http://web.com/pateketrueke me tendría que dar el array $user_perfil con los datos de pateketrueke, pero viendo un poco encontré que el problema es que $user_perfil se queda como una variable local dentro de esa función y no logro sacarla.
  #4 (permalink)  
Antiguo 30/08/2011, 12:47
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Problema con variables

Intenta algo asi:

Código PHP:
function buscar_perfil($abuscar) {

    global 
$plantillas;
    
$user_perfil = array();
    
    if (!
is_array($plantillas[$abuscar])) {

        @ 
$encontrado db_query('SELECT userID, username, nombre FROM usuarios WHERE username = "' $abuscar '" LIMIT 1'__FILE____LINE__);
        
$resultados mysql_num_rows($encontrado);

        if (
$resultados == 1) {
            
$row mysql_fetch_array($encontrado);
            
$user_perfil['id'] = $row['userID'];
            
$user_perfil['username'] = $row['username'];
            
$user_perfil['nombre'] = $row['nombre'];
            return 
$user_perfil;
        } else {
            
$user_perfil['id'] = 0;
        }
    } else {
        
$user_perfil['id'] = 0;
    }
    
    return 
$user_perfil;

Y avisame si te fue bien

Saludos!
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #5 (permalink)  
Antiguo 30/08/2011, 12:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con variables

No tiene sentido lo que dices, pues al hacer return estás devolviendo el array.

A menos que en algún punto no entre en lo bloques de comparación, has esto:
Código PHP:
$row mysql_fetch_array($encontrado);
die(
print_r($row,1)); 
¿Que muestra?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 30/08/2011, 13:06
 
Fecha de Ingreso: febrero-2010
Mensajes: 27
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con variables

El problema como dije era que la variable $user_perfil se quedaba como una variable local dentro de la función, lo solucioné agregandala en el global:

Así:
Código PHP:
Ver original
  1. function buscar_perfil($abuscar){
  2.     global $plantillas, $user_perfil;
  3.  
  4. ..... (todo lo demás igual).
  5. }

Gracias a todos.
  #7 (permalink)  
Antiguo 30/08/2011, 13:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con variables

Entonces tienes serios problema conceptuales, ¿si sabes para que sirve return?

La idea de una función que devuelve datos es que dicho resultado puede asignarse a una variable, lo cual en tu caso al hacer uso de globales se traduce a un mal diseño de la aplicación.

Código PHP:
$user_perfil buscar_perfil('rnld55u'); 
Te invito a consultar el manual.
http://php.net/manual/es/language.functions.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 30/08/2011, 13:12
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Problema con variables

Justamente en el ejemplo que te di subi el scope de la variable, no recomiendo el uso de global, simplemente debías declarar tus dos variables luego de de las llaves de apertura de la función y listo.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #9 (permalink)  
Antiguo 30/08/2011, 13:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 27
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con variables

Con $user_perfil = buscar_perfil('rnld55u'); en vez de buscar_perfil('rnld55u'); me anda bien sin usar el global;
Gracias chicos, voy a leer algo de teoría ^^

Etiquetas: arrays, funcion, problem
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 15:44.