Foros del Web » Programando para Internet » PHP »

como hacer conteos en un ciclo while ?

Estas en el tema de como hacer conteos en un ciclo while ? en el foro de PHP en Foros del Web. Hola a todos, estoy intentando hacer un conteo en un while pero realmente no me sale El formato como genero los informes es: El informe ...
  #1 (permalink)  
Antiguo 05/12/2011, 14:45
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
como hacer conteos en un ciclo while ?

Hola a todos, estoy intentando hacer un conteo en un while pero realmente no me sale

El formato como genero los informes es:



El informe me muestra como tal los datos agrupados pero aun no puedo mostrar el total de cada agrupamiento
aca el codigo:
Código PHP:
Ver original
  1. <?php
  2. $sql="SELECT .. FROM...";
  3. $obj->consulta($sql);
  4. $anterior="";
  5. $siguiente="";
  6.  
  7.   while ($row = sqlsrv_fetch_array($obj->result))
  8. {
  9.    $anterior=$row[4];
  10.  
  11.    if($anterior!=$siguiente)
  12.      {
  13.           ECHO $row[4]."</br>";
  14.  
  15.      }
  16.  //aca muestro los demas datos
  17. $siguiente=$anterior;
  18.  
  19. }
  20.  
  21. ?>

Como aparece en la imagen (color rojo), necesito hacer un conteo que muestre el total de cada agrupamiento, pero eso es lo que aun no tengo idea como hacerlo...alguien me podria indicar como puedo hacer este conteo ?
De antemano gracias por la ayuda...........
  #2 (permalink)  
Antiguo 05/12/2011, 14:58
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: como hacer conteos en un ciclo while ?

podrías poner la consulta completa para verla?

$sql="SELECT .. FROM...";
__________________
la la la
  #3 (permalink)  
Antiguo 05/12/2011, 15:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: como hacer conteos en un ciclo while ?

Pues el concepto es sencillo y ya lo tienes, al mostrar tu nueva categoría reseteas el contador y en cada vuelta del while lo incrementas:
Código PHP:
Ver original
  1. $prev = '';
  2. $counter = 0;
  3. while ($row = /**/) {
  4.       if ($row['algo'] != $prev) {
  5.               echo $counter;
  6.               echo "<br />";
  7.               echo $row['algo'];
  8.               $counter = 0;
  9.       }
  10.  
  11.       echo $row['otracosa'];
  12.       $counter++;
  13.      
  14. }
  #4 (permalink)  
Antiguo 05/12/2011, 15:15
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: como hacer conteos en un ciclo while ?

ohhhh que sencillo, llevaba un rato dandole vueltas, muchas gracias GatorV...........
  #5 (permalink)  
Antiguo 05/12/2011, 16:08
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: como hacer conteos en un ciclo while ?

Para una sumatoria, tambien tendria que resetiar una variable?.....
  #6 (permalink)  
Antiguo 05/12/2011, 16:20
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: como hacer conteos en un ciclo while ?

También se podrías hacer con count() en la consulta
__________________
la la la
  #7 (permalink)  
Antiguo 05/12/2011, 16:21
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: como hacer conteos en un ciclo while ?

Lo que pasa es que es para un generador de reportes y casi nunca hay count () o sum() .......
todo toca por programación
  #8 (permalink)  
Antiguo 05/12/2011, 16:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: como hacer conteos en un ciclo while ?

Claro cualquier "subtotal" que quieras tener lo debes de "resetear" al cambiar de grupo.
  #9 (permalink)  
Antiguo 05/12/2011, 17:03
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: como hacer conteos en un ciclo while ?

el problema que tengo es que no me esta haciendo la suma correctamente:
me sale asi:


y tengo el codigo asi:
Código PHP:
Ver original
  1. <?php
  2. $sql="SELECT .. FROM...";
  3. $obj->consulta($sql);
  4. $anterior="";
  5. $siguiente="";
  6. $sum=0
  7.  while ($row = sqlsrv_fetch_array($obj->result))
  8. {
  9. $anterior=$row[4];
  10. if($anterior!=$siguiente)
  11. {
  12.  $sum=$sum+$row[3];
  13.  ECHO $sum."</br>";
  14.   $sum=0;
  15.  }
  16. //aca muestro los demas datos
  17. $siguiente=$anterior;
  18.  
  19. }
  20. ?>

estoy sumando las edades, pero solo me suma el primer valor....
  #10 (permalink)  
Antiguo 06/12/2011, 01:01
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: como hacer conteos en un ciclo while ?

No se si será el problema pero falta un ; acá
$siguiente="";
$sum=0

Probá asi, le puse un else

Código PHP:
Ver original
  1. <?php
  2. $sql="SELECT .. FROM...";
  3. $obj->consulta($sql);
  4. $anterior="";
  5. $siguiente="";
  6. $sum=0;
  7.  while ($row = sqlsrv_fetch_array($obj->result))
  8. {
  9. $anterior=$row[4];
  10. if($anterior!=$siguiente)
  11. {
  12.  $sum=$sum+$row[3];
  13.  ECHO $sum."</br>";
  14.  
  15.  }else{
  16.             $sum=0;
  17.          }
  18. //aca muestro los demas datos
  19. $siguiente=$anterior;
  20.  
  21. }
  22. ?>
__________________
la la la
  #11 (permalink)  
Antiguo 06/12/2011, 06:03
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: como hacer conteos en un ciclo while ?

No, ese ; ya lo tenia...pero aún el problema sigue....lo proble como me dices con el else pero aún solo me suma el primer resultado.....
  #12 (permalink)  
Antiguo 06/12/2011, 06:32
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: como hacer conteos en un ciclo while ?

el programa hace lo que tu le indicas que le indicas que haga
Código PHP:
Ver original
  1. if($anterior!=$siguiente)
en esta linea comparas que sea diferente al otro o no?? las edades se suman son de las mismas entidades como lo llamas tu o no?? entonces donde debería de ir la suma??
prueba algo asi
Código PHP:
Ver original
  1. if($anterior!=$siguiente)
  2. {
  3.      $sum=$row[3];  
  4.  } else{
  5.     $sum += $row[3];
  6. }
de tal manera que cuando es la primera vez de la entidad asignas la edad, sino es la primera vez le sumas a la edad que ya esta asignada, bueno esto si entendi bien tu duda, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #13 (permalink)  
Antiguo 06/12/2011, 06:50
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: como hacer conteos en un ciclo while ?

si, se deben sumar las edades agrupadas para cada entidad... por ejemplo para entidad n2 deberia ser la sumatoria igual a 55....voy a probar y te cuento, el resultado lo deberia mostrar fuera del ciclo?....
  #14 (permalink)  
Antiguo 06/12/2011, 07:00
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: como hacer conteos en un ciclo while ?

Buenoo te voy a comentar el problema q tengo...lo que pasa es que ese while esta dentro de otro while:

Código PHP:
Ver original
  1. <?php
  2. $sql="SELECT ....";
  3. $obj->consulta($sql);
  4. while ($row = sqlsrv_fetch_array($obj->result)) // primer while
  5. {
  6.     //aca adentro tengo otro while porque debo comparar
  7.     // los resultados del primer while, con cada resultado de otra consulta:
  8.     $sql2="SELECT REPLACE(CAMPO, '~', '''') as campo, ALIASCAMPO, APLICALIAS, TIPODATO FROM REPORCAMP WHERE CODREPOR='".$reporte."'";
  9.    
  10.     $obj2->consulta($sql2);
  11.    
  12.     while ($row2 = sqlsrv_fetch_array($obj2->result))
  13.      {
  14.          //ahora aca tengo el while donde tengo q hacer la sumatoria
  15.            $grupos=explode(",", $grupby2);  
  16.              $h=0;
  17.            while($h<count($grupos))
  18.           {
  19.               $sql4="SELECT REPLACE(A.CAMPO, '~', '''') as campo, A.ALIASCAMPO, A.APLICALIAS, A.TIPODATO, B.OPERA, B.CAMPOPE FROM REPORCAMP A INNER JOIN REPORGRUP B ON A.CAMPO=B.CAMPAGR WHERE A.CODREPOR='".$reporte."' AND CAMPO='".$grup."'";
  20.            $obj4->consulta($sql4);
  21.            $row4 = sqlsrv_fetch_array($obj4->result);
  22.  
  23.             if($grup==$row4[0])
  24.              {
  25.                    $anterior=trim($row[$row4[0]]);
  26. if($anterior!=$siguiente)
  27.                  {
  28.  
  29.               }
  30.  
  31.  
  32.           }
  33.      
  34.  
  35.       }
  36.  
  37.  
  38. }
  39. ?>
  #15 (permalink)  
Antiguo 06/12/2011, 08:39
 
Fecha de Ingreso: septiembre-2009
Ubicación: Queretaro
Mensajes: 51
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: como hacer conteos en un ciclo while ?

Por que no mejor creas un algoritmo en diagrama de flujo para que veas que al parecer estas colocando la sumatoria en un lugar donde no va aun no leo el código pero esa es mi primera impresion sobre lo que he notado.

saludos.

Etiquetas: sql, ciclos
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 04:37.