Foros del Web » Programando para Internet » PHP »

Sumar Datos en un bucle

Estas en el tema de Sumar Datos en un bucle en el foro de PHP en Foros del Web. Estimados .. tengo que realizar una pagina tipo liquidacion .. osea saco lo que debe y lo que tiene a favor y con eso saco ...
  #1 (permalink)  
Antiguo 12/10/2011, 16:33
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Sumar Datos en un bucle

Estimados .. tengo que realizar una pagina tipo liquidacion .. osea saco lo que debe y lo que tiene a favor y con eso saco el saldo que va quedando... pasa a explicarselos ..

ejemplo sencillo ...

Código PHP:
$debito ;
$credito  0;

do {

<
div>$debito $rows_liq['debito']</div> <div>$credito$rows_liq['credito']</div>
<
div>$saldo$saldo $credito -$debito</div

}while (
$row_liq mysql_fetch_assoc($liq)); 
ahora mi problema basico es que en el select de la consulta yo ordeno de forma DESCENDENTE por que necesito que se muestre asi .. pero tambien me suma de forma descendiente osea me suma el $saldo desde el ultimo al primero y yo necesito que me lo haga al reves la suma...

ME EXPLICO !!
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza

Última edición por jakuam; 12/10/2011 a las 16:34 Razón: mal escrito
  #2 (permalink)  
Antiguo 12/10/2011, 17:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Sumar Datos en un bucle

Bueno, la suma al reves... es una resta!!!

Ahora, esto esta mal:

Código:
<div>$debito = $rows_liq['debito']</div> <div>$credito= $rows_liq['credito']</div>
<div>$saldo= $saldo + $credito -$debito</div>
Si pones tu codigo real (tambien un ejemplo de como sale y como deberia salir), tal vez seria mas facil tratar de ayudarte.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 12/10/2011, 18:15
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: Sumar Datos en un bucle

les dejo codigo completo
la consulta :
Código PHP:
SELECT FROM reserva_dat,clientes WHERE clientes.usuario = %AND reserva_dat.alojamiento_id clientes.id_alojar AND   reserva_dat.estado_reserva='R'  $buscar ORDER BY reserva_dat.reservas_id DESC 
el armado de lo que se muestra

Código PHP:
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                        <tr class="titulo_busqueda">
                          <td width="138" height="35" align="center" bgcolor="#267EAC" class="">Localizador</td>
                          <td width="153" height="35" align="center" bgcolor="#267EAC" class="">fecha reserva </td>
                          <td width="150" height="35" align="center" bgcolor="#267EAC" class="">Monto Total</td>
                          <td width="138" height="35" align="center" bgcolor="#267EAC" class="">Comision</td>
                          <td width="75" height="35" align="center" bgcolor="#267EAC" class="">Total Hotel</td>
                          <td width="75" align="center" bgcolor="#267EAC" class="">Forma de Pago</td>
                          <td width="100" height="35" align="center" bgcolor="#267EAC" class="">DEBITO</td>
                          <td width="86" height="35" align="center" bgcolor="#267EAC" class="">CREDITO</td>
                          <td width="50" height="35" align="center" bgcolor="#267EAC" class="">Saldo</td>
                        </tr>
                        <?php $i =0$debito 0$credito=0; do {?>
                        
                        <tr class="<?php if ($i == 0) {echo "fila_color_1";} else {echo "fila_color_2";}?>" >
                          <td width="138" height="40"  align="center" valign="middle" class="texto_comun"><div align="center"><?php echo $row_Recordset1['Localizador']; ?></div></td>
                          <td width="153" height="40" align="center" valign="middle" class="texto_comun"><?php echo $row_Recordset1['fecha_reserva']; ?></td>
                          <td width="150" height="40" align="center" valign="middle" class="nombre_aloja_CELES"><div align="center">$<?php echo $row_Recordset1['costo_total']; ?></div></td>
                          <td width="138" height="40" align="center" valign="middle" class=""><div align="center" class="menu_lateral"><strong>$
                            <?php $comision =($row_Recordset1['costo_total'] * $row_Recordset1['comision']/100); 
                                      echo 
$comision ?>
                          (<?php echo $row_Recordset1['comision']; ?>%)</strong></div></td>
                          <td width="75" height="40" align="center" valign="middle" style="padding-left:30px"><div align="center" class="nombre_aloja_rec">$
                            <?php  $totalahotel =($row_Recordset1['costo_total'] - $comision);  echo $totalahotel;?>
                          </div></td>
                          <td width="75" height="40" align="center" valign="middle" style="padding-left:30px"><span class="nombre_aloja_rec">
                            <?php  if ($row_Recordset1['metodo_pago']=="C") {echo "Anticipado";}  if ($row_Recordset1['metodo_pago']=="S") {echo "Fraccionado";}  if ($row_Recordset1['metodo_pago']=="G") {echo "en Hotel";} ?>
                          </span></td>
                          <td width="100" height="40" align="center" valign="middle" class="texto_comun"><span class="nombre_aloja_rec">
                            <?php  if ($row_Recordset1['metodo_pago']=="C") { echo "-";}  if ($row_Recordset1['metodo_pago']=="S") { echo "-";}  if ($row_Recordset1['metodo_pago']=="G") {$debito $comision; echo "<span class= texto_rojo >-".$debito."</span>"; } ?></span></td>
                          <td width="86" height="40" align="center" valign="middle" class="nombre_aloja_CELES"><span class="nombre_aloja_rec">
                            <?php  if ($row_Recordset1['metodo_pago']=="C") { $credito $totalahotel; echo $credito;}  if ($row_Recordset1['metodo_pago']=="S") {if ($row_Recordset1['comision']==$row_Recordset1['sena']){echo "-";} else {$credito =$row_Recordset1['monto_pago']- $comision ; echo $credito;}}  if ($row_Recordset1['metodo_pago']=="G") {echo "-"; } ?>
                          </span></td>
                          <td width="50" align="center" valign="middle" class="nombre_aloja_CELES"><span class="nombre_aloja_rec">
                            <?php $saldo $saldo $credito $debito ; echo $saldo?>
                          </span></a></td>
                        </tr>
                        <?php  $i=$i+1; } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
                        <tr class="linea_inferior">
                          <td width="138" height="25" class="texto_comun">&nbsp;</td>
                          <td width="153" height="25" class="texto_comun">&nbsp;</td>
                          <td width="150" height="25" class="texto_comun">&nbsp;</td>
                          <td width="138" height="25" class="texto_comun">&nbsp;</td>
                          <td width="75" height="25" class="texto_comun">&nbsp;</td>
                          <td width="75" height="25" class="texto_comun">&nbsp;</td>
                          <td width="100" height="39" class="texto_comun">&nbsp;</td>
                          <td height="39" colspan="2" class="nombre_aloja_CELES"><input name="num" type="hidden" id="num" value="<?php echo $num?>" />
                              <input name="reserva_id" type="hidden" id="reserva_id" value="<?php echo $row_Recordset2['reservas_id']; ?>" /></td>
                        </tr>
                        <tr>
                          <td colspan="9">                          </td>
                        </tr>
                      </table>
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #4 (permalink)  
Antiguo 12/10/2011, 18:23
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: Sumar Datos en un bucle

lo que necesito es que se la liquidacion desde la ultima reserva hasta la primera .. en forma descendiente ... pero que la suma arranque desde la primera reserva hasta la ultima.. Me explico ?

Osea :

Código:
reserva id ||       fecha        || monto || debito || credito || saldo 
-------------------------------------------------------------------------------------
      4         ||   16/10/2011  || $1200 ||    0      ||  1000   ||  1000
      3         ||   6/10/2011    || $1800 ||  -300   ||     0     ||   400
      2         ||   1/10/2011    || $1000 ||    0      ||  800    ||   700
      1         ||   1/10/2011    || $800   ||  -100   ||     0     ||   -100
me explico =?

espero su ayuda
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #5 (permalink)  
Antiguo 13/10/2011, 07:50
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: Sumar Datos en un bucle

alguien una mano !!!?? plis ...
Triby que esta mal?.. de esto:

do {

<div>$debito = $rows_liq['debito']</div> <div>$credito= $rows_liq['credito']</div>
<div>$saldo= $saldo + $credito -$debito</div>

}while ($rows_liq = mysql_fetch_assoc($liq));

como puedo sumar desde abajo asi arriba !! plis ayuda
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #6 (permalink)  
Antiguo 13/10/2011, 08:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Sumar Datos en un bucle

Bueno, creo que lo más fácil sería recorrer los resultados de la consulta en orden inverso, tal como necesitas que se realicen los cálculos; la diferencia sería que vas guardando los datos en un array y después los muestras como necesitas.

Ejemplo:
Código PHP:
Ver original
  1. $datos = array();
  2. $i = 0;
  3. while($rows_liq = mysql_fetch_assoc($liq)) {
  4.     $datos[$i] = $rows_liq;
  5.     // Aqui haces los calculos y los guardas tambien en el mismo array (mismo indice)
  6.     $datos[$i]['saldo'] = /* tu operacion matematica */;
  7. }
  8.  
  9. // Despues:
  10. for($i = count($datos) - 1; $i >= 0; $i--) {
  11.     // Muestras el resultado
  12. }
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 13/10/2011, 09:11
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: Sumar Datos en un bucle

gracias Triby ... lo probare ..
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #8 (permalink)  
Antiguo 13/10/2011, 10:05
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: Sumar Datos en un bucle

triby muchas gracias ahi funciono de maravilla .. aparte el codigo queda mas limpia y facil de manipular -- deje codigo para otros que necesiten lo mismo

Código PHP:
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                        <tr class="titulo_busqueda">
                          <td width="138" height="35" align="center" bgcolor="#267EAC" class="">Localizador</td>
                          <td width="153" height="35" align="center" bgcolor="#267EAC" class="">fecha reserva </td>
                          <td width="150" height="35" align="center" bgcolor="#267EAC" class="">Monto Total</td>
                          <td width="138" height="35" align="center" bgcolor="#267EAC" class="">Comision</td>
                          <td width="75" height="35" align="center" bgcolor="#267EAC" class="">Total Hotel</td>
                          <td width="75" align="center" bgcolor="#267EAC" class="">Forma de Pago</td>
                          <td width="100" height="35" align="center" bgcolor="#267EAC" class="">DEBITO</td>
                          <td width="86" height="35" align="center" bgcolor="#267EAC" class="">CREDITO</td>
                          <td width="50" height="35" align="center" bgcolor="#267EAC" class="">Saldo</td>
                        </tr>
                        <?php $datos = array();
$j 0;
 do {  
$datos[$j]['localizador'] = $row_Recordset1['Localizador'];
 
$datos[$j]['fecha_reserva'] = $row_Recordset1['fecha_reserva'];
  
$datos[$j]['costo_total'] = $row_Recordset1['costo_total'];
  
//calculo comision
  
$comision =($row_Recordset1['costo_total'] * $row_Recordset1['comision']/100);
  
$datos[$j]['comision'] = $comision;
  
//calculo total Hotel
  
$totalahotel =($row_Recordset1['costo_total'] - $comision);
  
$datos[$j]['totalhotel'] = $totalahotel;
  
$datos[$j]['metodo_pago'] =$row_Recordset1['metodo_pago'];
  
//calculo debito
  
if ($row_Recordset1['metodo_pago']=="C" or $row_Recordset1['metodo_pago']=="S") { $datos[$j]['debito'] = 0;}  if ($row_Recordset1['metodo_pago']=="G") {$datos[$j]['debito']= $comision; } 
  
//calculo Credito 
if ($row_Recordset1['metodo_pago']=="C") { $datos[$j]['credito'] = $totalahotel;}  if ($row_Recordset1['metodo_pago']=="S") {if ($row_Recordset1['comision']==$row_Recordset1['sena']){$datos[$j]['credito'] = 0;} else {$datos[$j]['credito']=$row_Recordset1['monto_pago']- $comision ;}}  if ($row_Recordset1['metodo_pago']=="G") {$datos[$j]['credito'] =0; } 
    
// calculo saldo
    
$datos[$j]['saldo'] = $datos[$j-1]['saldo']+$datos[$j]['credito']-$datos[$j]['debito']; $j++;} while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
<?php $i 
=0$debito 0; for($j count($datos) - 1$j >= 0$j--) {?>
                        
                        <tr class="<?php if ($i == 0) {echo "fila_color_1";} else {echo "fila_color_2";}?>" >
                          <td width="138" height="40"  align="center" valign="middle" class="texto_comun"><div align="center"><?php echo  $datos[$j]['localizador']; ?></div></td>
                          <td width="153" height="40" align="center" valign="middle" class="texto_comun"><div align="center"><?php echo  $datos[$j]['fecha_reserva']; ?></div></td>
                          <td width="150" height="40" align="center" valign="middle" class="nombre_aloja_CELES"><div align="center"><?php echo  $datos[$j]['monto_total']; ?></div></td>
                          <td width="138" height="40" align="center" valign="middle" class=""><div align="center"><?php echo  $datos[$j]['comision']; ?></div></td>
                          <td width="75" height="40" align="center" valign="middle" style="padding-left:30px"><div align="center"><?php echo  $datos[$j]['totalhotel']; ?></div></td>
                          <td width="75" height="40" align="center" valign="middle" style="padding-left:30px"><div align="center"><?php echo  $datos[$j]['metodo_pago']; ?></div></td>
                          <td width="100" height="40" align="center" valign="middle" class="texto_comun"><div align="center"><?php echo  $datos[$j]['debito']; ?></div></td>
                          <td width="86" height="40" align="center" valign="middle" class="nombre_aloja_CELES"><div align="center"><?php echo  $datos[$j]['credito']; ?></div></td>
                          <td width="50" align="center" valign="middle" class="nombre_aloja_CELES"><div align="center"><?php echo  $datos[$j]['saldo']; ?></div>                            </a></td>
                        </tr>
                        <?php  $i=$i+1; } ?>
                        <tr class="linea_inferior">
                          <td width="138" height="25" class="texto_comun">&nbsp;</td>
                          <td width="153" height="25" class="texto_comun">&nbsp;</td>
                          <td width="150" height="25" class="texto_comun">&nbsp;</td>
                          <td width="138" height="25" class="texto_comun">&nbsp;</td>
                          <td width="75" height="25" class="texto_comun">&nbsp;</td>
                          <td width="75" height="25" class="texto_comun">&nbsp;</td>
                          <td width="100" height="39" class="texto_comun">&nbsp;</td>
                          <td height="39" colspan="2" class="nombre_aloja_CELES"><input name="num" type="hidden" id="num" value="<?php echo $num?>" />
                              <input name="reserva_id" type="hidden" id="reserva_id" value="<?php echo $row_Recordset2['reservas_id']; ?>" /></td>
                        </tr>
                        <tr>
                          <td colspan="9">                          </td>
                        </tr>
                      </table>
espero que alguien le sirva

saludos ..
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza

Etiquetas: bucle, mysql
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:36.