Foros del Web » Programando para Internet » PHP »

Trabajo con Arrays

Estas en el tema de Trabajo con Arrays en el foro de PHP en Foros del Web. amigos .. necesito su ayuda ... estoy hacendo un sistema de liquidacion .. donde se muestran los debitos y credito y ademas los pagos efectuados.. ...
  #1 (permalink)  
Antiguo 14/10/2011, 07:41
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Trabajo con Arrays

amigos .. necesito su ayuda ... estoy hacendo un sistema de liquidacion .. donde se muestran los debitos y credito y ademas los pagos efectuados..

para mostrar los pagos lo muestro entre las filas de cada operacion...

Código PHP:
// armo array con los datos de pago

 
$pagos_hotel= array();
 
$g=0;

 while (
$row_pagos mysql_fetch_assoc($pagos)) {
                     
                     
$pagos_hotel[$g]['pago_id'] = $row_pagos['id_pagos_h'];
                          
$pagos_hotel[$g]['monto'] = $row_pagos['monto_pagado'];
                              
$pagos_hotel[$g]['fecha_pago'] = $row_pagos['fecha_pago'];
                                  
$pagos_hotel[$g]['concepto'] = $row_pagos['concepto'];
                    
$g++; 
                      } 
ahora tengo que mostrarlos .. solo una vez para la condicion que la fecha de pago sea mayor a la fecha de operacion .. pero que no se repita ... he probado barias alternativas pero no he logrado que solo se muestren una sola vez

Código PHP:
<?php 
$pagos_id 
= array ();
                        for(
$g=0$g <= count($pagos_hotel); $g++) {
                             if (
in_array ($pagos_hotel[$g]['pago_id'],$pagos_id)){} else { // comprar si existe ya en el arrays pagos_id
                                
  
if ($datos[$j]['fecha_reserva']> $pagos_hotel[$g]['fecha_pago']) {  $pagos_id[$g]= $pagos_hotel[$g]['pago_id'];?><tr class="linea_inferior">
                          <td height="25" colspan="6" align="center" bgcolor="#FFE7CE" class="texto_comun">Se realizo un pago al hotel el dia <?php echo $pagos_hotel[$g]['fecha_pago']; ?> bajo el concepto :&quot;<?php echo $pagos_hotel[$g]['concepto']; ?>&quot;</td>
                          <td width="100" height="39" align="center" bgcolor="#FFE7CE" class="texto_comun"><?php echo $pagos_hotel[$g]['monto']; ?></td>
                          <td height="39" align="center" bgcolor="#FFE7CE" class="nombre_aloja_CELES">&nbsp;</td>
                          <td height="39" align="center" bgcolor="#FFE7CE" class="nombre_aloja_CELES"><?php 
                          $datos
[$j]['saldo'] = $datos[$j-1]['saldo']+$datos[$j]['credito']-$datos[$j]['debito']-$datos[$j]['pago_hotel']; 
                          echo  
$datos[$j]['saldo']; ?></td>
                        </tr>
                    <?php    } }} ?>

probe tambien con hacer un unset para cada vez que se muestre un pago eliminar este del arrrays .. espero su ayuda
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #2 (permalink)  
Antiguo 14/10/2011, 14:22
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: Trabajo con Arrays

alguien una ayuda?
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #3 (permalink)  
Antiguo 16/10/2011, 09:52
Avatar de auttranadhie  
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid (España)
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Trabajo con Arrays

Hola:

Espero que lo que te explique te pueda valer para algo.

Lo primero: para armar la matriz como lo estás haciendo, no te hace falta usar un contador. PHP te irá añadiendo un índice automático desde cero para dicha matriz.

Veo asimismo que usas el contador con el ID del registro ... ¿Por qué no dejas sólo el ID suponiendo que éste sea un elemento unívoco de cada registro?

Por otro lado, no es necesario que declares una variable como matriz.

Por último, no veo un campo de fecha de operación con que evaluar la fecha de pago. Te propongo que lo que incluyas.

Así, y de forma más limpia, te puede quedar la variable:

Código PHP:
while ($row_pagos mysql_fetch_assoc($pagos))

   
$pagos_hotel[$row_pagos['pago_id']] = array("id_h" => $row_pagos['id_pagos_h'], 
      
"monto" => $row_pagos['monto_pagado'], 
      
"fecha_pago" => $row_pagos['fecha_pago'],
      
"fecha_oper" => $row_pagos['fecha_oper'], // Yo pondría un campo de fecha de operación 
      
"concepto" => $row_pagos['concepto']);

Simplemente, te quedaría evaluar toda la matriz, entrada por entrada:

Código PHP:
foreach($pagos_hotel as $index => value)
{
   if(
$value["fecha_pago"] > $value["fecha_oper"])
   {
      
// Los procedimientos que haya que hacer si la fecha de operación es mayor a la del pago.
   
}

Espero que te haya podido ser de alguna utilidad.

Un saludo.
__________________
A. Uttranadhie

Etiquetas: arrays, liquidacion
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 19:59.