elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ayuda con la suma correcta de estos datos + PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con la suma correcta de estos datos + PHP  (Leído 1,624 veces)
adryan310

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con la suma correcta de estos datos + PHP
« en: 30 Enero 2014, 00:00 am »

Saludos,

Tengo el siguiente while donde recorro todos los datos devueltos por la base de datos, dentro del while agrupo los resultados donde NumGame y Teams sea igual al que estuvo antes y voy sumando los campos que tienen el += pero algo estoy haciendo mal ya que la suma de esos campos no me esta dando correctamente, si me agrupa bien los datos pero no me los suma bien, alguna ayuda?
Código
  1. $counterTickets  = 0;
  2. $counterRisk     = 0;
  3. $counterWinLoss  = 0;
  4. $IdGames         = "";
  5.  while($dataGames = $strDataGames->fetch(PDO::FETCH_ASSOC)){
  6.    if (isset($anterior) ){
  7. // Si hay un aterior trabajamos con el. Esto se hace ciempre.
  8.   $counterTickets      += $anterior['Tickets'];
  9.   $counterRisk         += $anterior['Risk'];
  10.   $counterWinLoss      += $anterior['WinLoss'];
  11.   $IdGames             .= $anterior['IdGame']."+";    
  12. // Verificamos la similitud con el anterior. Si coinciden hago lo que quiero.
  13. if(($dataGames['NumGame']  == $anterior['NumGame']) && ($dataGames['Teams'] == $anterior['Teams'])){
  14.   if(strtotime($anterior['Time']) < strtotime($dataGames['Time']))
  15.       $anterior['Time'] = $dataGames['Time'];
  16.  
  17.    $anterior['Score']   =  $dataGames['Score'];
  18.  
  19.  }else{  
  20. $todayFigure += $counterWinLoss;
  21. $response .= "<tr>
  22. <td>$anterior[Time]</td>
  23. <td>$anterior[NumGame]</td>
  24. <td>$anterior[Teams]</td>
  25. <td>$anterior[Score]</td>
  26. <td><a href=\"#\" onClick=\"openInfoWager(this);\">$counterTickets</a></td>
  27. <td>$counterRisk</td>
  28. <td>$counterWinLoss</td>
  29. <td>$todayFigure</td>
  30.     </tr>";
  31.   // Borrar el anterior.
  32.   unset($anterior);
  33.   }      
  34. }
  35.  
  36. // Si hay un aterior trabajamos con el. Esto se hace ciempre.
  37. if ( !isset($anterior) ){
  38. // Preparar las variables para la proxima ronda.
  39. $counterTickets     = 0;
  40. $counterRisk        = 0;
  41. $counterWinLoss     = 0;
  42. $IdGames            = "";
  43. $anterior           = $dataGames;
  44. }
  45. }//end while
  46.  


« Última modificación: 31 Enero 2014, 06:34 am por @drvy » En línea

sexto

Desconectado Desconectado

Mensajes: 200


Ver Perfil
Re: Ayuda con la suma correcta de estos datos + PHP
« Respuesta #1 en: 30 Enero 2014, 11:44 am »

No estoy seguro porque la tabulación puede engañar un poco (culpa de los copiar/pegar, no tuya).
Pero creo que al hacer por primera vez el While no hace nada del primer If y lo único que hace es poner los contadores a 0 y dar valor a las variables IdGames (texto vacío) y Anterior (row anterior, obviamente).
Y luego trabajas siempre con $anterior. Lo que significa (creo) que cuando llegue a la última row de la consulta, le dará esos valores a $anterior, pero NO volverá a entrar en el While, por lo que esos datos se quedarán en el aire...
No sé si me explico.

Por cierto, para hacer más legible el código, pon =php en la etiqueta code, es decir:
Código:
[code=php]....
[/code]


En línea

adryan310

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda con la suma correcta de estos datos + PHP
« Respuesta #2 en: 30 Enero 2014, 17:12 pm »

Amigo modifique mi codigo, ahora lo tengo asi, pero igual no me suma lo que debe de sumar  :-(
Código
  1. function showFila(&$response, $anterior, $counterTickets, $counterRisk, $counterWinLoss, $todayFigure){
  2.                      $response .= "<tr>
  3.                                     <td>$anterior[Time]</td>
  4.                                     <td>$anterior[NumGame]</td>
  5.                                     <td>$anterior[Teams]</td>
  6.                                     <td>$anterior[Score]</td>
  7.                                     <td><a href=\"#\" onClick=\"openInfoWager(this);\">$counterTickets</a></td>
  8.                                     <td>$counterRisk</td>
  9.                                     <td>$counterWinLoss</td>
  10.                                     <td>$todayFigure</td>
  11.                                   </tr>";
  12.    }
  13. // Variable
  14.    $estado = (bool) ($dataGames = $strDataGames->fetch(PDO::FETCH_ASSOC));
  15. // El while
  16.    while($estado){
  17.        if ( isset($anterior) ){
  18.            // Si hay un aterior trabajamos con el. Esto se hace ciempre.
  19.           $counterTickets      += $anterior['Tickets'];
  20.           $counterRisk         += $anterior['Risk'];
  21.           $counterWinLoss      += $anterior['WinLoss'];
  22.           $IdGames             .= $anterior['IdGame']."+";    
  23.  
  24.            // Verificamos la similitud con el anterior. Si coinciden hago lo que quiero.
  25.            if(($dataGames['NumGame']  == $anterior['NumGame']) && ($dataGames['Teams'] == $anterior['Teams'])){
  26.               if(strtotime($anterior['Time']) < strtotime($dataGames['Time']))
  27.                  $anterior['Time']    = $dataGames['Time'];
  28.  
  29.                  $anterior['Score']   =  $dataGames['Score'];
  30.            }
  31.            else{  
  32.                  $todayFigure += $counterWinLoss;
  33.                  // ahora se usa la funcion
  34.                  showFila($response, $anterior, $counterTickets, $counterRisk, $counterWinLoss, $todayFigure);
  35.  
  36.                  // Borrar el anterior.
  37.                  unset($anterior);
  38.                }      
  39.        }
  40.  
  41.        if ( !isset($anterior) ){
  42.            // Preparar las variables para la proxima ronda.
  43.            $counterTickets     = 0;
  44.            $counterRisk        = 0;
  45.            $counterWinLoss     = 0;
  46.            $IdGames            = "";
  47.            $anterior           = $dataGames;
  48.        }
  49.  
  50.        // Si es el ultimo.
  51.        if(!($estado = (bool) ($dataGames = $strDataGames->fetch(PDO::FETCH_ASSOC))))
  52.                showFila($response, $anterior, $counterTickets, $counterRisk, $counterWinLoss, $todayFigure);
  53. }// end while.
  54.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
necesito pasar estos datos x post « 1 2 3 »
Desarrollo Web
tecasoft 26 11,310 Último mensaje 18 Abril 2013, 14:34 pm
por WHK
como hacer una matriz con estos datos
Programación C/C++
eduluis 1 1,985 Último mensaje 1 Mayo 2013, 12:56 pm
por pacoperico
suma de datos dinamicos
Desarrollo Web
kakashi20 3 3,759 Último mensaje 13 Junio 2013, 20:50 pm
por engel lex
Estos datos son normales en NETSTAT -n 10
Seguridad
Gaheru 1 1,634 Último mensaje 18 Mayo 2014, 19:03 pm
por Randomize
Ayuda con base de datos. Formulacion correcta? Cumple con Boyce-Codd?
Bases de Datos
LeandroRodriguez 4 2,790 Último mensaje 27 Octubre 2015, 00:58 am
por LeandroRodriguez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines