Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Bucle consulta mysql

Estas en el tema de Bucle consulta mysql en el foro de PHP en Foros del Web. Hola, a ver si pueden ayudarme ya que no consigo obtener el valor que necesito. Para el ID 1 necesita iterar desde k=0 hasta 250 ...
  #1 (permalink)  
Antiguo 19/01/2016, 13:06
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Bucle consulta mysql

Hola,

a ver si pueden ayudarme ya que no consigo obtener el valor que necesito. Para el ID 1 necesita iterar desde k=0 hasta 250 para obtener este resultado:

Resultado= K*17 *(fecha_hasta_1-fecha_desde_1)+ K*22 *(fecha_hasta_2-fecha_desde_2)+ K*17 *(fecha_hasta_3-fecha_desde_3);

Id Fecha_Desde Fecha_Hasta Valor_Demandado
1 fecha_desde_1 fecha_hasta_1 17
1 fecha_desde_2 fecha_hasta_2 22
1 fecha_desde_3 fecha_hasta_3 45
2 2015-10-01 2015-10-31 17
2 2015-11-01 2015-11-30 22

Lo que hago es una consulta a la BD para seleccionar todos los registros con ID=1 (por ejemplo). Luego un bucle for desde k=0 hasta 250 pero aqui me pierdo. Como puedo hacer para hacer el calculo...he usado mysql_fectch_array sobre la consulta pero me hace el calculo 250 veces sobre el primer registro (fecha 1), luego 250 sobre el segundo (fecha 2) y 250 sobre el tercero...

Gracias.
  #2 (permalink)  
Antiguo 20/01/2016, 02:06
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Bucle consulta mysql

Hola,

alguien puede indicarme porque no entra en el bucle while en cada iteracion. Solo entra la primera vez con k=0...no lo entiendo

Gracias

Código PHP:
$sql "SELECT * FROM registros WHERE Id='1'";
$q_consumos mysql_query($sql,$conectar) ;

for (
$k=0;$k<250;$k++){

while(
$datos=mysql_fetch_array($q)){
$FechaDesde=$datos['FechaDesde'];    
echo 
$k" ;" .$FechaDesde;
}


y la salida que obtengo es:

0;fechadesde1
0;fechadesde2
0;fechadesde3
12345667...250

y esto es lo que quiero:

0;fechadesde1
0;fechadesde2
0;fechadesde3
1;fechadesde1
1;fechadesde2
1;fechadesde3
2;fechadesde1
2;fechadesde2
2;fechadesde3
.
.
.
249;fechadesde1
249;fechadesde2
249;fechadesde3
  #3 (permalink)  
Antiguo 20/01/2016, 03:45
Avatar de chulifo  
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Respuesta: Bucle consulta mysql

Cita:
Iniciado por dasapa Ver Mensaje
Hola,

alguien puede indicarme porque no entra en el bucle while en cada iteracion. Solo entra la primera vez con k=0...no lo entiendo

Gracias

Código PHP:
$sql "SELECT * FROM registros WHERE Id='1'";
$q_consumos mysql_query($sql,$conectar) ;

for (
$k=0;$k<250;$k++){

while(
$datos=mysql_fetch_array($q)){
$FechaDesde=$datos['FechaDesde'];    
echo 
$k" ;" .$FechaDesde;
}


y la salida que obtengo es:

0;fechadesde1
0;fechadesde2
0;fechadesde3
12345667...250

y esto es lo que quiero:

0;fechadesde1
0;fechadesde2
0;fechadesde3
1;fechadesde1
1;fechadesde2
1;fechadesde3
2;fechadesde1
2;fechadesde2
2;fechadesde3
.
.
.
249;fechadesde1
249;fechadesde2
249;fechadesde3

Código PHP:
Ver original
  1. [PHP]
  2. $sql = "SELECT * FROM registros WHERE Id='1'";
  3. $q_consumos = mysql_query($sql,$conectar) ;
  4.  
  5.  
  6.  
  7. while($datos=mysql_fetch_array($q)){
  8. for ($k=0;$k<250;$k++){
  9. $FechaDesde=$datos['FechaDesde'];  
  10. echo $k. " ;" .$FechaDesde;
  11. }
  12.  
  13. }
  14. [/PHP]

y si lo pruebas al revés.
__________________
Solo soy un simple fanático que mata el tiempo de la mejor manera.
  #4 (permalink)  
Antiguo 20/01/2016, 05:32
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Bucle consulta mysql

jeje, gracias por contestar. También lo hice. De esta forma obtengo:

0;fechadesde1
1;fechadesde1
2;fechadesde1
.
.
250;fechadesde1
0;fechadesde2
1;fechadesde2
2;fechadesde2
.
.
250;fechadesde2
0;fechadesde3
1;fechadesde3
2;fechadesde3
.
.
250;fechadesde3

El problema es que tengo que hacer un calculo para cada valor de k con fecha 1, fecha 2 y fecha 3. Por ejemplo para k=0 -> Resultado=k*fecha1+k*fecha2+k*fecha3 e ir probando con todas las k para obtener un optimo. Si lo hiciese como me indicas tendría que crear 250 variables ¿? para ir acumulando el valor y luego buscar el optimo.

Gracias. Un saludo
  #5 (permalink)  
Antiguo 20/01/2016, 06:05
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Bucle consulta mysql

Y si en vez de crear 250 variables ingresas cada uno de los 250 resultados en un array y luego lo recorres buscando el valor óptimo?
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #6 (permalink)  
Antiguo 20/01/2016, 06:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bucle consulta mysql

Probemos:
Código PHP:
Ver original
  1. $sql = "SELECT * FROM registros WHERE Id='1'";
  2. $q_consumos = mysql_query($sql,$conectar) ;
  3. while($datos=mysql_fetch_array($q)){
  4. $FechaDesde=$datos['FechaDesde'];    
  5. for ($k=0;$k<250;$k++){
  6.  
  7. echo $k. " ;" .$FechaDesde;
  8. }
  9.  
  10. }
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 20/01/2016, 06:11
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Bucle consulta mysql

eso me gusta más.. alguna pista?

perdona gnzsoloyo, no había leido tu post. El resultado es el mismo que lo que me indico chulifo
  #8 (permalink)  
Antiguo 20/01/2016, 06:31
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Bucle consulta mysql

Gracias chronos682!! Esta perfecto

Etiquetas: bucle, fecha, mysql, registro
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 02:24.