Foros del Web » Programando para Internet » PHP »

Problema con return se pierde el valor

Estas en el tema de Problema con return se pierde el valor en el foro de PHP en Foros del Web. hola tengo el problema de que el return no envia el valor que debe de enviar bueno, no regresa nada mi funcion es esta Código ...
  #1 (permalink)  
Antiguo 15/04/2008, 14:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 142
Antigüedad: 18 años, 3 meses
Puntos: 0
Problema con return se pierde el valor

hola tengo el problema de que el return no envia el valor que debe de enviar bueno, no regresa nada mi funcion es esta

Código PHP:
function get_id_cat_ant($id_cat_city)
{
    while (
$id_cat_city!=0)
    {
        
$query_cat_ant='select id_cat from td_categorias where id_cat='.$id_cat_city;
        
$res_cat_ant=mysql_query($query_cat_ant) or die ("Hay error en funcion_cat_ant".mysql_error());
        while(
$row_cat_ant=mysql_fetch_array($res_cat_ant))
        {
            if (
$row_cat_ant['id_cat_ant']==0)
            {
            
$city=$row_cat_ant['id_cat'];
            }
            
            
$id_cat_city=$row_cat_ant['id_cat_ant'];
        }
    }
    return 
$city;

ya revise y poniendo le un echo si me da el valor pero cuando le pongo return se pierde y no regresa nada, alguien podria explicarme donde se pierde?
  #2 (permalink)  
Antiguo 15/04/2008, 14:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problema con return se pierde el valor

Prueba esto:
Código PHP:
function get_id_cat_ant($id_cat_city)
{
    while (
$id_cat_city!=0)
    {
        
$query_cat_ant='select id_cat from td_categorias where id_cat='.$id_cat_city;
        
$res_cat_ant=mysql_query($query_cat_ant) or die ("Hay error en funcion_cat_ant".mysql_error());
        while(
$row_cat_ant=mysql_fetch_array($res_cat_ant))
        {
            if (
$row_cat_ant['id_cat_ant']==0)
            {
            
$city=$row_cat_ant['id_cat'];
            }
            
            
$id_cat_city=$row_cat_ant['id_cat_ant'];
        }
    }
    echo 
$city;
    return 
$city;

y verifica si te imprime el valor correcto de $city.

Saludos.
  #3 (permalink)  
Antiguo 15/04/2008, 14:50
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Problema con return se pierde el valor

Holas ever_diaz

No entiendo bien tu función, en la parte que haces la consulta... ¿si ya tienes el valor del ID_CAT, para qué lo preguntas de nuevo en la base de datos? Asumo que lo haces porque estás comprobando que sea válido, o no?

Por otra parte, en el while preguntas por el valor de $row_cat_ant['id_cat_ant'], siendo que este campo, a primeras, en la consulta no existe (en tu query sólo consultas por "id_cat", no por un "id_cat_ant").

Como fuera, según lo que veo, la variable $city toma valor sólo cuando el "id_cat_ant" vale cero, o sea, ¿siempre?.

Por cierto, cuando has hecho las pruebas ¿dónde has puesto el echo para comprobar que sí te ha arrojado valor la consulta? ¿Cómo usas tu función?

Te sugiero declarar la variable $city al inicio de la función con un valor de false, de modo que cuando llames a la función corrobores que no sea falso para saber que está correcta. Bueno, esto es una sugerencia si te sirve para el caso, puede que no ^^

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #4 (permalink)  
Antiguo 15/04/2008, 15:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 142
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Problema con return se pierde el valor

hola muchisimas gracias por la ayuda y si el error es que no tenia id_cat_ant en el query oir eso nunca me regresaba el valor no se en que parte del codigo lo perdi pero bueno ya quedo solucionado en si el problema era que despues de estar con estas cosas el que se ciclo fui yo y no veia un error tan obvio. muchas gracias!!
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:55.