Foros del Web » Programando para Internet » PHP »

Manipular datos dentro de un LOOP

Estas en el tema de Manipular datos dentro de un LOOP en el foro de PHP en Foros del Web. Hola amigos, aqui una vez mas con otra duda desde ya agradeciendo a todos !!! tengo la siguiente pregunta, tengo que hacer un reporte que ...
  #1 (permalink)  
Antiguo 18/10/2011, 20:26
 
Fecha de Ingreso: junio-2011
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 8
Manipular datos dentro de un LOOP

Hola amigos, aqui una vez mas con otra duda desde ya agradeciendo a todos !!!

tengo la siguiente pregunta, tengo que hacer un reporte que compare cantidades en rangos de fechas. por ejemplo el usuario entra un rango de fecha y debo buscar en la base de datos la marca y el modelo la cantidad que se vendio y compararlo con la misma marca y modelo en el mismo rango de fecha pero del anno anterior. Diferentes clientes pueden comprar distintos modelos y necesito la cantidad que cmpro cada cliente y la suma total de todas las compras de ese modelo

Código PHP:
// $dat1 Fecha inicio y $date2 fecha final

$query mysql_query("SELECT marca, modelo, cliente, qty 
                                   FROM table WHERE date BETWEEN '$date1' AND '$date2'"
);

// debo calcular el mismo rango de fecha para el anno anterior
$date_1y strtotime '-1 year' strtotime $date1 ) ) ;
$date_1y date 'Y-m-j' $date_1y );
// Fecha final
$date_2y strtotime '-1 year' strtotime $date2 ) ) ;
$date_2y date 'Y-m-j' $date_2y );


// Mostrar resutlados.
while($resultado mysql_fetch_array($query)){
    
     
// Obtener valores en variables.
    
$marca $resultado['marca'];
    
$modelo $resultado['modelo'];
    
$cliente $resultado['cliente'];
    
$cantidad $resultado['qty'];

    
// Mostrar los resultado en una tabla.
    
echo "<table><tr>";
    echo 
"<td>Marca</td>";
    echo 
"<td>Modelo</td>";
    echo 
"<td>Cliente</td>";
    echo 
"<td>Qty-1</td>";
    echo 
"<td>Qty-2</td>";
    echo 
"<td>Diferencia</td>";
    echo 
"</tr><tr>"
    
echo "<td>".$marca"</td>";
    echo 
"<td>".$modelo"</td>"
    echo 
"<td>".$cliente"</td>";
    echo 
"<td>".$qty"</td>";
    
// Buscar la misma marca y modelo pero en el anno anterior
   
$query2 mysql_query("SELECT qty FROM table 
                                        WHERE date    BETWWEN $date_1y AND $date_2y
                                        AND marca = '$marca'
                                        AND modelo='$modelo'
                                        AND cliente = '$cliente'"
);
    
$qty_2 mysql_fetch_array($query2);
   
   
// Mostrar cantidad del anno anterior.
   
echo "<td>".$qty_2['qty']."</td>";
   echo 
"<td>".$qty $qty2."</td>";
   

   
// AQUI ES MI DUDA. Cuando termine un modelo hacer una suma total.
   
   // terminr la tabla. 
   
echo "</tr></table>";

Pregunta: Como puedo manipular los datos dentro del loop while que le pueda decir a mi programa cuando acabe un modelo sumame la cantidad por anno, primero actual y despues anno anterior y devuelveme el valor ??

Quisiera obtener algo asi:

-----------------------------------------------------------------
Marca | Modelo | Cliente | Qty1 | Qty2 | Diferencia |
-----------------------------------------------------------------
1 | 1.1 | A | 30 | 20 | +10 |
1 | 1.1 | B | 20 | 40 | -20 |
1 | 1.1 | C | 50 | 10 | +40 |
-----------------------------------------------------------------
Total Marca: 1 Modelo: 1.1 | 100 | 70 | +30 |
-----------------------------------------------------------------
1 | 1.2 | A | 20 | 10 | +10 |
1 | 1.2 | C | 30 | 40 | -10 |
-----------------------------------------------------------------
Total marca: 1 Modelo: 1.2| 50 | 50 | 0 |
-----------------------------------------------------------------


Muchas Gracias a todos de antemano !!!!
  #2 (permalink)  
Antiguo 19/10/2011, 01:25
Avatar de mko
mko
 
Fecha de Ingreso: agosto-2010
Ubicación: la vida es un riesgo
Mensajes: 101
Antigüedad: 14 años, 4 meses
Puntos: 14
Respuesta: Manipular datos dentro de un LOOP

LO DE LA SUMAS DE LOS AÑOS
ESO LO HACES CON FUNCION COUNT DE MYSQL


PARA HACER LA SUMA TOTAL DE LA CONSULTA ACTUAL PRUEBA CON ESTO


Código PHP:

//_________declaramos variable para acumula_______________________
$total1=0$total2=0
//____________________________________
// $dat1 Fecha inicio y $date2 fecha final



   // Mostrar cantidad del anno anterior. AQUI TE QUEDASTE
   
echo "<td>".$qty_2['qty']."</td>";
   echo 
"<td>".$qty $qty2."</td>";


   
// AGREGA ESTO

$total1+=$qty;
$total2+=$qty2;
   

   echo 
"</tr><tr>";
    echo 
"<td></td>";
    echo 
"<td></td>";
    echo 
"<td></td>";
    
    echo 
"<td>$total1</td>";
    echo 
"<td>$total2</td>";
    echo 
"<td>ESTE LO HACES TU</td>";
    echo 
"</tr></table>";

__________________
cuando no esperas nada y obtienes todo eso es destino

Última edición por mko; 19/10/2011 a las 01:32
  #3 (permalink)  
Antiguo 19/10/2011, 08:35
 
Fecha de Ingreso: junio-2011
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Manipular datos dentro de un LOOP

Hola MKO, gracias por tu respuestas, pero otra pergunta que tengo es la siguiente:

Como podria hacer la suma total cada vez que cambie un modelo, o sea, que me de el resultado de la suma por cada modelo, mi duda es que no se como detectar dentro del loop while cuando la variable $modelo, cambia de un modelo a otro para hacer la suma total.

Quisiera obtener algo asi:

-----------------------------------------------------------------
Marca | Modelo | Cliente | Qty1 | Qty2 | Diferencia |
-----------------------------------------------------------------
1 | 1.1 | A | 30 | 20 | +10 |
1 | 1.1 | B | 20 | 40 | -20 |
1 | 1.1 | C | 50 | 10 | +40 |
-----------------------------------------------------------------
Total Marca: 1 Modelo: 1.1 | 100 | 70 | +30 |
-----------------------------------------------------------------
1 | 1.2 | A | 20 | 10 | +10 |
1 | 1.2 | C | 30 | 40 | -10 |
-----------------------------------------------------------------
Total marca: 1 Modelo: 1.2| 50 | 50 | 0 |
-----------------------------------------------------------------

Casa vez que me devuelve un modelo diferente al anterior hacer entonces la suma total para ese unico modelo y comenzar con el otro nuevamente el mismo ciclo.

Muchisimas gracias por toda su ayuda !!!!!
  #4 (permalink)  
Antiguo 19/10/2011, 11:10
 
Fecha de Ingreso: junio-2011
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Manipular datos dentro de un LOOP

Alguna idea o recomendadion de lectura para este caso de como chequear cuando cambia el valor de una variable dentro de un loop while ??

Muchas Gracias.
  #5 (permalink)  
Antiguo 19/10/2011, 11:37
Avatar de mko
mko
 
Fecha de Ingreso: agosto-2010
Ubicación: la vida es un riesgo
Mensajes: 101
Antigüedad: 14 años, 4 meses
Puntos: 14
Respuesta: Manipular datos dentro de un LOOP

prueba asi para que haga una accion cuando el modelo sea distitinto

Código PHP:
$comparacion=0;


$query mysql_query("SELECT marca, modelo, cliente, qty 
                                   FROM table WHERE date BETWEEN '$date1' AND '$date2'"
);

// debo calcular el mismo rango de fecha para el anno anterior
$date_1y strtotime '-1 year' strtotime $date1 ) ) ;
$date_1y date 'Y-m-j' $date_1y );
// Fecha final
$date_2y strtotime '-1 year' strtotime $date2 ) ) ;
$date_2y date 'Y-m-j' $date_2y );


// Mostrar resutlados.
while($resultado mysql_fetch_array($query)){
    
     
// Obtener valores en variables.
    
$marca $resultado['marca'];
    
$modelo $resultado['modelo'];
    
$cliente $resultado['cliente'];
    
$cantidad $resultado['qty'];

    
// Mostrar los resultado en una tabla.
    
echo "<table><tr>";
    echo 
"<td>Marca</td>";
    echo 
"<td>Modelo</td>";
    echo 
"<td>Cliente</td>";
    echo 
"<td>Qty-1</td>";
    echo 
"<td>Qty-2</td>";
    echo 
"<td>Diferencia</td>";
    echo 
"</tr><tr>"
    
echo "<td>".$resultado['marca']."</td>";
    echo 
"<td>".$resultado['modelo']."</td>"
    echo 
"<td>".$resultado['cliente']."</td>";
    echo 
"<td>".$resultado['qty']."</td>";
    
// Buscar la misma marca y modelo pero en el anno anterior
   
$query2 mysql_query("SELECT qty FROM table 
                                        WHERE date    BETWWEN $date_1y AND $date_2y
                                        AND marca = '$marca'
                                        AND modelo='$modelo'
                                        AND cliente = '$cliente'"
);
    
$qty_2 mysql_fetch_array($query2);
   
   
// Mostrar cantidad del anno anterior.
   
echo "<td>".$qty_2['qty']."</td>";
   echo 
"<td>".$resultado['qty'] - $qty_2['qty']."</td>";
   echo 
"</tr>";
   
   
$comparacion=$resultado['modelo'];
   if(
$resultado['modelo'] != $comparacion)
   {
   echo
"<tr>//aui ya hace las sumas de cada modelo  diferecte</tr>";
   
   }
   
$comparacion=0;
   

echo
"   </table>";?> 
__________________
cuando no esperas nada y obtienes todo eso es destino
  #6 (permalink)  
Antiguo 19/10/2011, 13:25
 
Fecha de Ingreso: junio-2011
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Manipular datos dentro de un LOOP

Hola Mko hice lo que me has recomendado, pero creo que la variable comparacion siempre tendra el mismo valor de $resultado['modelo'], o sea que nunca entrara dentro del if.

es que antes que comience el if igualas el valor de comparacion a $resultado['modelo']

y depsues en el if comparas que sean diferentes y no lo seran porque lo igualas en la linea anterior, esoy en lo cierto ?? o me equivoco ???

Gracias por la ayuda !!!
  #7 (permalink)  
Antiguo 19/10/2011, 18:01
Avatar de mko
mko
 
Fecha de Ingreso: agosto-2010
Ubicación: la vida es un riesgo
Mensajes: 101
Antigüedad: 14 años, 4 meses
Puntos: 14
Respuesta: Manipular datos dentro de un LOOP

si es cierto entoces al final de cada fila le pasamos el valor a la variable
asi al siguente bucle tenderemos el nuevo valor del areglo y el valor anterior de del areglo en comparacion

la solucion esta por aqui solo ay q pulir la idea


prueba asi y me avisas

Código PHP:
//tpmando en cunta q comparacion =1.1

   
if( $resultado['modelo'] ==$comparacion )
   {
   echo
"<tr>//imprimes filas</tr>";
   
   }
  else{
 echo
"<tr>//imprimes filas para simar totales</tr>";

}
   
$comparacion=$resultado['modelo']; 
__________________
cuando no esperas nada y obtienes todo eso es destino

Última edición por mko; 19/10/2011 a las 18:10

Etiquetas: loop, manipular, mysql, tabla, variables, usuarios
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 11:22.