Foros del Web » Programando para Internet » PHP »

¿Por que me devuelve solo un resultado cuando deberia devolver 37?

Estas en el tema de ¿Por que me devuelve solo un resultado cuando deberia devolver 37? en el foro de PHP en Foros del Web. Hola a todos/as Tengo la siguiente funcion y solo me devuelve un resultado cuando se que debe devolver 37, haber si veis lo que estoy ...
  #1 (permalink)  
Antiguo 28/01/2008, 07:00
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 12 años
Puntos: 0
¿Por que me devuelve solo un resultado cuando deberia devolver 37?

Hola a todos/as

Tengo la siguiente funcion y solo me devuelve un resultado cuando se que debe devolver 37, haber si veis lo que estoy haciendo mal:

Código PHP:
<?Php
function nombres_u($id_delegacion,$fecha,$id_jefe){

$consulta_nombres mysql_query("SELECT * FROM campos_prefactura WHERE (nombre_campo LIKE 'u%') ORDER BY id_campo_prefactura ASC");
//    $result = mysql_query("SELECT * FROM campos_prefactura WHERE (nombre_campo LIKE 'u%') ORDER BY id_campo_prefactura ASC");

// Sacamos el numero total de filas de la consulta
$num_rows mysql_num_rows($consulta_nombres);

 
//Componemos un array con los resultado que nos devuelve la consulta

for($i=$i<=$num_rows $i++)
   {

$escribe_nombres mysql_fetch_array($consulta_nombres);

$registro_nombre[$i]['nombre'] = $escribe_nombres['nombre_campo'];
 
$cuenta_campo=$registro_nombre[$i]['nombre'];
         
print_r ($cuenta_campo);
$procesa_suma="SUM(".$cuenta_campo.")";
// Aqui realizamos la consulta con los datos que nos ha devuelto la consulta anterior

$suma_campo=mysql_query ("SELECT $procesa_suma FROM prefactura WHERE id_delegacion='$id_delegacion' AND fecha='$fecha' AND id_jefe='$id_jefe'")or die (mysql_error());

// Metemos el resultado en un array asociativo
$contador=0;
while (
$escribe_suma mysql_fetch_assoc($suma_campo)){


        
$subtotales[$contador]=$escribe_suma;
        
$contador++;


}
        return 
$subtotales;
}



}

?>
Solo me devuelve esto :

1us_g_bu4us_g_bu

Y deberia devolver 37 nombres de campos incluido ese que imprime.

Haber si veis donde esta mal la funcion y por que lo hace mal, por que yo cada vez lo entiendo menos.

Asi la llamo desde el script

Código PHP:
 $subtotalesnombres_u($id_delegacion,$fecha,$jefe[$i]); 
Y asi imprimo los resultados

Código PHP:
 echo $subtotales[0]['SUM(us_g_bu)']; 
No entiendo na de na la verdad, cada vez lo veo mas ilogico, por que por logica deberia funcionar.

Saludos.
  #2 (permalink)  
Antiguo 28/01/2008, 07:55
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: ¿Por que me devuelve solo un resultado cuando deberia devolver 37?

todo depende de un tipo llamado while

aqui esta to: http://www.forosdelweb.com/f18/solo-...gistro-550404/
  #3 (permalink)  
Antiguo 28/01/2008, 08:04
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 13 años, 3 meses
Puntos: 3
Re: ¿Por que me devuelve solo un resultado cuando deberia devolver 37?

creo que te falta en el while su array o su row
  #4 (permalink)  
Antiguo 28/01/2008, 08:19
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 12 años
Puntos: 0
Re: ¿Por que me devuelve solo un resultado cuando deberia devolver 37?

Cita:
Iniciado por hulray Ver Mensaje
creo que te falta en el while su array o su row
Hola Hulray y Famp

Si os dais cuenta tiene un while, el cual cicla los resultados, eso es lo que me extraña.

Por que si no estuviera lo veria normal, pero solo me devuelve uno dentro del mismo while.

Si revisais el codigo el while aparece al final, mirarlo por que eso es lo extraño.

Saludos.
  #5 (permalink)  
Antiguo 28/01/2008, 08:22
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: ¿Por que me devuelve solo un resultado cuando deberia devolver 37?

entonce te falta el if

if contador=0 { while.... o al go asi
o ssea la condicion para ejecutar while
  #6 (permalink)  
Antiguo 28/01/2008, 08:33
Avatar de LuZBinG  
Fecha de Ingreso: enero-2008
Mensajes: 407
Antigüedad: 11 años, 10 meses
Puntos: 5
Re: ¿Por que me devuelve solo un resultado cuando deberia devolver 37?

hola checa el while hay algo extraño ahi
tambien puedes cambiar el for del array por el foreach
es mas efectivo para este tipo de consultas

Cita:
foreach ($array as $indice2 => $valor2){

}
saludos
  #7 (permalink)  
Antiguo 28/01/2008, 08:48
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 12 años
Puntos: 0
Re: ¿Por que me devuelve solo un resultado cuando deberia devolver 37?

Cita:
Iniciado por LuZBinG Ver Mensaje
hola checa el while hay algo extraño ahi
tambien puedes cambiar el for del array por el foreach
es mas efectivo para este tipo de consultas


saludos
Hola LuZBinG

Te explico si el return lo bajo una llave y compruebo con print_r ($subtotales);, me imprime el array completo pero ahora bien , si le pongo el return ahi solo me devuelve un dato, y eso es lo que no entiendo, la verdad.

Como incorporarias el foreach en la funcion para intentar resolver este problema.

Saludos

Última edición por marco_sa; 28/01/2008 a las 08:53
  #8 (permalink)  
Antiguo 28/01/2008, 09:39
Avatar de LuZBinG  
Fecha de Ingreso: enero-2008
Mensajes: 407
Antigüedad: 11 años, 10 meses
Puntos: 5
Re: ¿Por que me devuelve solo un resultado cuando deberia devolver 37?

haber no entiendo algo el resultado de la consulta lo estas metiendo en un arreglo que es $num_rows es asi?? por este comentario que pones
//Componemos un array con los resultado que nos devuelve la consulta

pues si es asi a qui esta el uso con foreach:
la variable $valor trae el contenido del arreglo es lo que se imprime

Cita:
foreach($num_rows as $indice =>$valor)
{

$escribe_nombres = mysql_fetch_array($consulta_nombres);

$registro_nombre[$i]['nombre'] = $escribe_nombres['nombre_campo'];
$cuenta_campo=$registro_nombre[$i]['nombre'];
print_r ($cuenta_campo);
$procesa_suma="SUM(".$cuenta_campo.")";
// Aqui realizamos la consulta con los datos que nos ha devuelto la consulta anterior

$suma_campo=mysql_query ("SELECT $procesa_suma FROM prefactura WHERE id_delegacion='$id_delegacion' AND fecha='$fecha' AND id_jefe='$id_jefe'")or die (mysql_error());

// Metemos el resultado en un array asociativo
$contador=0;
while ($escribe_suma = mysql_fetch_assoc($suma_campo)){


$subtotales[$contador]=$escribe_suma;
$contador++;


}
return $subtotales;
}



}
espero te sirva
  #9 (permalink)  
Antiguo 28/01/2008, 10:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 12 años
Puntos: 0
Re: ¿Por que me devuelve solo un resultado cuando deberia devolver 37?

Cita:
Iniciado por LuZBinG Ver Mensaje
haber no entiendo algo el resultado de la consulta lo estas metiendo en un arreglo que es $num_rows es asi?? por este comentario que pones
//Componemos un array con los resultado que nos devuelve la consulta

pues si es asi a qui esta el uso con foreach:
la variable $valor trae el contenido del arreglo es lo que se imprime


espero te sirva
Hola LuZBinG

No vale el foreach ahi pierde datos o bien se lia, haber mira te explico en detalles, esta funcion lo que hace es coger los datos almacenados en un campo que se llama nombre_campo, que empiezan por "u" de la tabla campos_prefactura, los ordena por orden ascendente, luego coge y saca el numero de registros que coinciden con ese criterio, se mete en un for y los carga en un array
Código PHP:
$cuenta_campo=$registro_nombre[$i]['nombre']; 
, una vez cargado en un array y sin salirse del for se realiza una consulta
Código PHP:
$suma_campo=mysql_query ("SELECT $procesa_suma FROM prefactura WHERE id_delegacion='$id_delegacion' AND fecha='$fecha' AND id_jefe='$id_jefe'")or die (mysql_error()); 
a la tabla prefactura obteniendo la suma por campo y por id_jefe, ahora entra en un while y crea un array
Código PHP:
$subtotales[$contador]=$escribe_suma
con esos datos para poder utilizarlos en otro script, que es el que llama a esa funcion.

Mi problema es que no se como mandar ese array al script, o mejor dicho como puedo coger esos datos del array, lo referencio asi desde el script
Código PHP:
 $subtotalesnombres_u($id_delegacion,$fecha,$jefe[$i]); 
, para imprimir el dato que me interesa,
Código PHP:
echo $subtotales[0]['SUM(us_g_bu)']; 
, pero no lo hace.

No se por que, haber si tu ves algo en la función raro.

Saludos.
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 01:57.