Foros del Web » Programando para Internet » PHP »

Como realizar la suma de los siguientes campos dentro del while?

Estas en el tema de Como realizar la suma de los siguientes campos dentro del while? en el foro de PHP en Foros del Web. Saludos, Tengo el siguiente while, donde recorro los datos y sumo algunos de ellos, en este ciclo agrupo los datos por numero de juego y ...
  #1 (permalink)  
Antiguo 28/01/2014, 15:06
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Como realizar la suma de los siguientes campos dentro del while?

Saludos,

Tengo el siguiente while, donde recorro los datos y sumo algunos de ellos, en este ciclo agrupo los datos por numero de juego y por equipos, cuando son iguales simplemente sumo los datos como los tickets, risk, winloss. Pero algo estoy haciendo mal ya que me retorna todo bien, me los agrupa bien, pero los campos que son calculados osea los que estoy sumando esos campos me salen 0 no se cual es el error, podrían ayudarme ??

Codigo PHP:
Código PHP:
$counterTickets  0;
$counterRisk     0;
$counterWinLoss  0;
$IdGames         "";
while(
$dataGames $strDataGames->fetch(PDO::FETCH_ASSOC)){
       if(isset(
$anterior) && ($dataGames['NumGame']  == $anterior['NumGame']) && ($dataGames['Teams'] == $anterior['Teams'])){
           if(
strtotime($anterior['Time']) < strtotime($dataGames['Time']))
                      
$anterior['Time'] = $dataGames['Time'];
           elseif(
strtotime($anterior['Time']) > strtotime($dataGames['Time']) || strtotime($anterior['Time']) == strtotime($dataGames['Time']))
                  
$anterior['Time'] = $anterior['Time'];
                               
        
$anterior['Score']    =  $dataGames['Score'];
        
$counterTickets      +=  $dataGames['Tickets'];
        
$counterRisk         +=  $dataGames['Risk'];
        
$counterWinLoss      +=  $dataGames['WinLoss'];
        
$IdGames             .=  $dataGames['IdGame']."+";
        }elseif(isset(
$anterior)){
               
$todayFigure += $counterWinLoss;
               
$response .= "<tr>
                                       <td>$anterior[Time]</td>
                           <td>$anterior[NumGame]</td>
                           <td>$anterior[Teams]</td>
                           <td>$anterior[Score]</td>
                           <td><a href=\"#\" onClick=\"openInfoWager(this);\">$counterTickets</a></td>
                           <td>$counterRisk</td>
                           <td>$counterWinLoss</td>
                           <td>$todayFigure</td>
                            </tr>"
;
         }
                                
    
// Preparar las variables para la proxima ronda.
       
$counterTickets     0;
       
$counterRisk        0;
       
$counterWinLoss     0;
       
$IdGames            "";
       
$anterior           $dataGames;
}
//end while 
  #2 (permalink)  
Antiguo 28/01/2014, 15:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como realizar la suma de los siguientes campos dentro del while?

Si te das cuenta, solamente sumas cuando se cumple la primera condición, por lo que presumo que dicha condición no se cumple y solamente ocurre lo siguiente, que es la impresión de datos.

Creo que eso se debe a que en la primera condición, intentas verificar que el valor de $dataGames['NumGame'] sea igual al de $anterior['NumGame'], cuando $anterior['NumGame'] no tiene asignados valores, o al menos no se ve en dónde lo haces antes de iniciar el bucle.

Corrige eso para que se pueda realizar la suma.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 28/01/2014, 16:05
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Como realizar la suma de los siguientes campos dentro del while?

No sera que no guardar el resultado de las sumas en la variables del array $anterior.
Código PHP:
#esto 
        
$counterTickets      +=  $dataGames['Tickets'];
        
$counterRisk         +=  $dataGames['Risk'];
        
$counterWinLoss      +=  $dataGames['WinLoss'];
        
$IdGames             .=  $dataGames['IdGame']."+"
#por esto
       
$anterior['Tickets'] =  $anterior['Tickets'] + $dataGames['Tickets'];
       
$anterior['Risk'] =  $anterior['Risk'] + $dataGames['Risk'];
       
$anterior['WinLoss'] =  $anterior['WinLoss'] + $dataGames['WinLoss'];
       
$anterior['IdGame'] =  $anterior['IdGame'] ."+".$dataGames['IdGame']; 
  #4 (permalink)  
Antiguo 28/01/2014, 16:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como realizar la suma de los siguientes campos dentro del while?

Supongo que si está intentando imprimir las variables $counterTickets, $counterRisk y $counterWinLoss aparte de lo que contiene el array $anterior, tal y como lo hace en las 4 primeras celdas, puedo imaginar que desea sumar y almacenar los valores en las variables que está usando y no añadirlas al array.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 28/01/2014, 16:21
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Respuesta: Como realizar la suma de los siguientes campos dentro del while?

Amigos, asi tengo mi codigo actualmente, este realiza la suma de los datos pero no se por que lo hace mal, y a Alexis88 amigo no te entendi bien lo que me comentastes.
Mi codigo:
Código PHP:
while($dataGames $strDataGames->fetch(PDO::FETCH_ASSOC)){
                           if(isset(
$anterior) && ($dataGames['NumGame']  == $anterior['NumGame']) && ($dataGames['Teams'] == $anterior['Teams'])){
                               if(
strtotime($anterior['Time']) < strtotime($dataGames['Time']))
                                  
$anterior['Time'] = $dataGames['Time'];
                               elseif(
strtotime($anterior['Time']) > strtotime($dataGames['Time']) || strtotime($anterior['Time']) == strtotime($dataGames['Time']))
                                  
$anterior['Time'] = $anterior['Time'];
                               
                               
$anterior['Score']    =  $dataGames['Score'];
                               
$anterior['Tickets'] =  $anterior['Tickets'] + $dataGames['Tickets'];
                               
$anterior['Risk'] =  $anterior['Risk'] + $dataGames['Risk'];
                               
$anterior['WinLoss'] =  $anterior['WinLoss'] + $dataGames['WinLoss'];
                               
                            }elseif(isset(
$anterior)){
                                    
$todayFigure $todayFigure $anterior['WinLoss'];
                                    
$response .= "<tr>
                                                   <td>$anterior[Time]</td>
                                                   <td>$anterior[NumGame]</td>
                                                   <td>$anterior[Teams]</td>
                                                   <td>$anterior[Score]</td>
                                                   <td><a href=\"#\" onClick=\"openInfoWager(this);\">$anterior[Tickets]</a></td>
                                                   <td>$anterior[Risk]</td>
                                                   <td>$anterior[WinLoss]</td>
                                                   <td>$todayFigure</td>
                                                  </tr>"
;
                            }
                                
                                
// Preparar las variables para la proxima ronda.
                                
$anterior['Tickets'] =  0;
                                
$anterior['Risk']    =  0;
                                
$anterior['WinLoss'] =  0;
                                
$anterior           $dataGames;
    
}
//end while 
  #6 (permalink)  
Antiguo 28/01/2014, 16:23
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Respuesta: Como realizar la suma de los siguientes campos dentro del while?

Todo me esta funcionando bien, es solo la suma de estos datos lo que me esta atrasando
  #7 (permalink)  
Antiguo 28/01/2014, 16:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como realizar la suma de los siguientes campos dentro del while?

No me hagas caso, ya me dí cuenta de lo que pretendes hacer. ¿Sigue imprimiéndose cero por cada dato?.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 28/01/2014, 16:37
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Respuesta: Como realizar la suma de los siguientes campos dentro del while?

No amigo a como tengo el codigo en este momento si me suma algo pero todas las sumas estan mal ya que cuando lo verifico en el sql y hago a pie la suma no me da lo que me esta devolviendo el codigo que tengo...

Etiquetas: campos, siguientes, suma, variable
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 05:07.