Foros del Web » Programando para Internet » PHP »

Reporte por grupos en php mysql

Estas en el tema de Reporte por grupos en php mysql en el foro de PHP en Foros del Web. Hola amigos de foros del web, de que manera podria imprimir, unos reportes (consultas a mysql) mediante tablas html pero por grupos. tengo una tabla ...

  #1 (permalink)  
Antiguo 31/03/2009, 08:44
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Reporte por grupos en php mysql

Hola amigos de foros del web, de que manera podria imprimir, unos reportes (consultas a mysql) mediante tablas html pero por grupos.

tengo una tabla
id,
nombre
grupo
email

lo que quiero hacer es un reporte de todos los registros pero agrupados por grupos ejemplo:






tengo esto , imprime todos:
<table border='1'>
<tr><td>id</td><td>nombre</td><td>grupo</td><td>correo</td></tr>
$sql=mysql_query("select * from tabla order by id");
while($row=mysql_fetch_array($sql))
{
echo "<tr><td>$row['id']</td><td>$row['nombre']</td><td>$row['grupo']</td><td>$row['correo']</td></tr>
}
echo "</table>";

esto imprime todo normal, lo qu quiero es la idea como imprimir por grupo como esta tabla:

[id] [nombre] [grupo] [email]
grupo A
1 anthony vidal A [email protected]
2 juan perez A [email protected]
grupo B
4 lindsay B [email protected]
6 Rosa B [email protected]


espero su ayuda gracias...
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]

Última edición por vidalsoft; 31/03/2009 a las 09:30
  #2 (permalink)  
Antiguo 31/03/2009, 09:23
(Desactivado)
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Reporte por grupos en php mysql

Hola... No acaba de entender bien tu pregunta. Quizás debas explicarlo un poco mejor.

Saludos!
  #3 (permalink)  
Antiguo 31/03/2009, 09:25
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: Reporte por grupos en php mysql

Eso lo realizas con simple HTML:
Código html:
Ver original
  1.       <tr>
  2.               <th>id</th>
  3.               <th>nombre</th>
  4.               <th>email</th>
  5.       </tr>
  6.       <tr>
  7.                <td colspan="3">Grupo A</td>
  8.       </tr>
  9.       <tr>
  10.                <td>1</td>
  11.                <td>fulano</td>
  12.                <td>[email protected]</td>
  13.       </tr>
  14.       <tr>
  15.                <td>2</td>
  16.                <td>foo</td>
  17.                <td>[email protected]</td>
  18.       </tr>

Saludos.
  #4 (permalink)  
Antiguo 31/03/2009, 09:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Reporte por grupos en php mysql

Una forma sería usar ORDER BY para ordenar por grupo.

Luego, al recorrer el resultado, cada vez que se cambia de grupo, le agregas el encabezado.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 31/03/2009, 09:29
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 2 meses
Puntos: 20
Respuesta: Reporte por grupos en php mysql

Select id, nombre, grupo, email from tabla Order By grupo
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #6 (permalink)  
Antiguo 31/03/2009, 09:32
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

Cita:
Iniciado por David el Grande Ver Mensaje
Una forma sería usar ORDER BY para ordenar por grupo.

Luego, al recorrer el resultado, cada vez que se cambia de grupo, le agregas el encabezado.

gracias pero como hago ese recorrido ejemplo porfavor
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #7 (permalink)  
Antiguo 31/03/2009, 09:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Reporte por grupos en php mysql

Con un bucle while, es una consulta normal
Código php:
Ver original
  1. while ($fila = mysql_fetch_row($resultado)) {
  2.     // Manejar fila
  3.     // Puedes agregar una condicional para saber si ha pasado al siguiente grupo
  4. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 31/03/2009, 09:34
 
Fecha de Ingreso: abril-2008
Mensajes: 88
Antigüedad: 16 años
Puntos: 5
Respuesta: Reporte por grupos en php mysql

primero, si ya sabes que grupos existen, simplemente has query's por grupos es decir :
$qr= "SELECT field1, field2, field3, field4 FROM tabla WHERE campogrupo = 'grupo'";

o bien si no lo sabes puedes hacer primero un Query al campo GRUPO y luego guardar el resultado en un array, hacer ese array unico con la funcion unique($array) y luego con respecto a este array hacer los query's respectivos. jejejejejeje

me contas como te fue.
  #9 (permalink)  
Antiguo 31/03/2009, 09:43
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

Cita:
Iniciado por David el Grande Ver Mensaje
Con un bucle while, es una consulta normal
Código php:
Ver original
  1. while ($fila = mysql_fetch_row($resultado)) {
  2.     // Manejar fila
  3.     // Puedes agregar una condicional para saber si ha pasado al siguiente grupo
  4. }
pero me imprime fila por fila el grupo
Código PHP:
while($row=mysql_fetch_array($sql)){
if(
$row["grupo"]==$row["grupo"]){
        echo 
"<tr class=\"Row\">
          <td colspan=\"14\"><strong>Grupo: </strong>"
.$row["grupo"]."<strong></strong></td>
        </tr>"
;
        }

echo -.... 
filas registros
....
..

help ....
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #10 (permalink)  
Antiguo 31/03/2009, 09:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Reporte por grupos en php mysql

Fíjate que estás comparando dos variables iguales . La idea es más o menos así:
Código php:
Ver original
  1. while ($fila = mysql_fetch_row($resultado)) {
  2.     if ($grupo != $fila[1]) {
  3.         $grupo = $fila[1];
  4.         // Imprimir encabezado
  5.     }
  6.     // Procesar fila
  7. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 31/03/2009, 09:55
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 2 meses
Puntos: 20
Respuesta: Reporte por grupos en php mysql

Código PHP:
<?php require_once('Connections/conexion.php'); ?>
<?php
mysql_select_db
($database_conexion$conexion);
$query_consulta "SELECT id, nombre, email, grupo FROM tabla Order By grupo";
$consulta mysql_query($query_consulta$conexion) or die(mysql_error());
$row_consulta mysql_fetch_assoc($consulta);
$totalRows_consulta mysql_num_rows($consulta);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<table width="500" border="1" style="border-collapse:collapse;" bordercolor="#000000">
<?php do{ ?>
<?php 
$grupoant
=$grupo;
$grupo=$row_consulta['grupo'];
?>
<?php 
if($grupoant != $grupo){?>
      <tr>
               <td colspan="3" align="center" bgcolor="#CCCCCC"><strong><?php echo $row_consulta['grupo'?></strong></td>
      </tr>
<?php ?>
      <tr>
              <th><?php echo $row_consulta['id']; ?></th>
              <th><?php echo $row_consulta['nombre'?></th>
              <th><?php echo $row_consulta['email'?></th>
      </tr>
<?php } while ($row_consulta mysql_fetch_assoc($consulta));?>
</table>
</body>
</html>
<?php
mysql_free_result
($consulta);
?>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #12 (permalink)  
Antiguo 31/03/2009, 10:11
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
muchas gracias FARRA FUNCIONO!!!

y si hubiera un campo de dinero por ejemplo, como haria para hacer la suma respectiva por cada grupo ...

osea

[id] [nombre] [grupo] [email] [dinero]
grupo A
1 anthony vidal A [email protected] 50.00
2 juan perez A [email protected] 60.00
total: 110.00
grupo B
4 lindsay B [email protected] 80.00
6 Rosa B [email protected] 100.00
total: 180.00
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]

Última edición por GatorV; 31/03/2009 a las 10:35
  #13 (permalink)  
Antiguo 31/03/2009, 10:35
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: Reporte por grupos en php mysql

Pues puedes ir almacenando los valores en un array, y luego usas array_sum() y lo despliegas en cada subgrupo.

Saludos.
  #14 (permalink)  
Antiguo 31/03/2009, 10:57
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

pero como los almaceno en un array si los recupero de una consulta mysql

....
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #15 (permalink)  
Antiguo 31/03/2009, 11:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Reporte por grupos en php mysql

Dentro del bucle while:
Código php:
Ver original
  1. $valores[] = $fila['columna'];
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 31/03/2009, 11:52
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

Gracias estoy usando el array_sum
pero... me funciona bien para el total de todo el reporte

lo que me falta es saber ubicar donde tengo que almacenar el array para la suma de los subtotales(osea del resumen de la agrupacion )
aqui el codigo :
Código PHP:
        <?php do{ ?>
<?php 
$grupoant
=$grupo;
$grupo=$RowOrden['dependencia'];
?>
<?php
if($grupoant != $grupo){

// yo creo que deberia poner aqui el codigo para que lo sume
// por grupo pero algo me falta....
            //SubTotal Retenciones
            
$sub_total_retencion[]= $RowOrden['retencion'];
            
//SubTotal Monto Bruto
            
$sub_total_mtobruto[] = $RowOrden['mtobruto'];
            
//SubTotal Monto Neto
            
$sub_total_mtoneto[]= $RowOrden['mtoneto'];
?>
<tr class="Row">
          <td colspan="14"><strong>Dependencia: <?php echo $RowOrden["dependencia"]."-".$RowOrden["dep_nombre"]; ?></strong></td>
        </tr>
  <?php ?>
        
        
        <tr class="Row">
          <td>
            <p align="center"><?php echo $RowOrden["id"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["concepto"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["proyecto"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["ruc"]; ?></p>
          </td> 
          <td nowrap>
            <p align="left"><?php echo $RowOrden["nombre"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["nemonico"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["serie"]; ?></p>
          </td> 
          <td>
            <p align="left"><?php echo $RowOrden["recibo"]; ?></p>
          </td> 
          <td nowrap>
            <p align="center"><?php echo $RowOrden["norden"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["subdep"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["partida"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["mtobruto"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["retencion"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["mtoneto"]; ?></p>
          </td>
        </tr><?php 
            
//Total Retenciones
            
$total_retencion[] = $RowOrden['retencion'];
            
//Total Monto Bruto
            
$total_mtobruto[] = $RowOrden['mtobruto'];
            
//Total Monto Neto
            
$total_mtoneto[] = $RowOrden['mtoneto'];
            
            } while (
$RowOrden=mysql_fetch_assoc($_pagi_result));?>
Los totales si funcionan bien el problema es con los subtotales de arriba ,
espero su ayuda gracias...
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #17 (permalink)  
Antiguo 31/03/2009, 12:44
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: Reporte por grupos en php mysql

Tal como lo estas haciendo solo asegurate que al cambiar de grupo resetees el valor usando $array = array() para borrar los datos anteriores.

Saludos.
  #18 (permalink)  
Antiguo 01/04/2009, 11:06
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

Hola men gracias, pero lo hice asi y solo hace el subtotal para la primera fila de cada grupo ...

este es mi codigo:

Código PHP:
<?php do{ ?>
<?php 
$grupoant
=$grupo;
$grupo=$RowOrden['dependencia'];
?>
<?php
if($grupoant != $grupo){  ?> 
<tr class="Row">
          <td colspan="14"><strong>Dependencia: <?php echo $RowOrden["dependencia"]."-".$RowOrden["dep_nombre"]; ?></strong></td>
        </tr>
         
  <?php ?>
       
        
        <tr class="Row">
          <td>
            <p align="center"><?php echo $RowOrden["id"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["concepto"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["proyecto"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["ruc"]; ?></p>
          </td> 
          <td nowrap>
            <p align="left"><?php echo $RowOrden["nombre"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["nemonico"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["serie"]; ?></p>
          </td> 
          <td>
            <p align="left"><?php echo $RowOrden["recibo"]; ?></p>
          </td> 
          <td nowrap>
            <p align="center"><?php echo $RowOrden["norden"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["subdep"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["partida"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["mtobruto"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["retencion"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["mtoneto"]; ?></p>
          </td>
        </tr>         <?php if($grupoant != $grupo){
 
             
$sub_total_retencion=array();
            
$sub_total_mtobruto=array();
            
$sub_total_mtoneto=array();
            
//SubTotal Retenciones
            
$sub_total_retencion[]= $RowOrden['retencion'];
            
//SubTotal Monto Bruto
            
$sub_total_mtobruto[] = $RowOrden['mtobruto'];
            
//SubTotal Monto Neto
            
$sub_total_mtoneto[]= $RowOrden['mtoneto'];
            
            
 
?>
<tr class="SubTotal">
          <td>&nbsp;</td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_mtobruto)); ?></td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_retencion)); ?></td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_mtoneto)); ?></td>
         
        </tr>
        <?php ?>
            <?php 
            
//Total Retenciones
            
$total_retencion[] = $RowOrden['retencion'];
            
//Total Monto Bruto
            
$total_mtobruto[] = $RowOrden['mtobruto'];
            
//Total Monto Neto
            
$total_mtoneto[] = $RowOrden['mtoneto']; ?>

    <?php        } while ($RowOrden=mysql_fetch_assoc($_pagi_result)); ?>
espero su ayuda gracias !!
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #19 (permalink)  
Antiguo 01/04/2009, 11:11
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: Reporte por grupos en php mysql

Pues claro, porque las asignaciones (el añadir al array) lo estas haciendo dentro de la parte donde condicionas que se impriman las cosas de los subgrupos, el sumar lo tienes que hacer igual donde sumas los totales.

Saludos.
  #20 (permalink)  
Antiguo 01/04/2009, 11:19
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

gracias GAtorV, pero los subtotales tienen que ser dinamicos por cada grupo, recuerda que imprime el reporte por cada grupo (de cada grupo una suma que es el subtotal por grupo)
por eso debe estar en el bucle la impresion de los subtotales...

espero tu ayuda gracias..
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #21 (permalink)  
Antiguo 01/04/2009, 11:22
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: Reporte por grupos en php mysql

Por eso mismo, tienes que resetear una vez que imprimes el subtotal, se asigna en la vuelta general pero al imprimir, reseteas el valor.

Saludos.
  #22 (permalink)  
Antiguo 01/04/2009, 11:36
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

ok, imprime todo ok, pero solo para la primera fila de cada grupo , debajo de la primera fila de cada grupo imprime el subtotal , a lo mejor estoy reseteando el array e imprimiendo en un lugar equivocado. podrias darle una chekeada por favor amigo...

derrepente es por que inicializo la rutina con el do{ } , el do {} me sirvio para poder imprimir el nombre de los grupos com cabecera, pero ahora necesito lo contrario que imprima como pie los subtotales de cada grupo... alguna idea ...
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #23 (permalink)  
Antiguo 01/04/2009, 11:43
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: Reporte por grupos en php mysql

Ya tienes la solución como te comente tienes que asignar el valor en cada vuelta del do/while, pero solamente resetear después de imprimir el subtotal.

Saludos.
  #24 (permalink)  
Antiguo 01/04/2009, 12:24
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Hola men. nada sigo tendiendo el mismo problema, por favor seria muy amable de tu parte que postearas el codigo como debe de ser segun el codigo de arriba

gracias.

saludos GatorV

hola amigos hasta ahora no eh podido solucionar este problema por favor ayudenme hasta el momento el reporte me sale asi si se dan cuenta la ultima fila es el total eso esta bien el problema es en los subtotales por cada grupo (o dependencia) esta imprimiendo solo para la primera fila y debajo de la primera fila .. lo que debe hacer es imprimir al final de cada grupo como subtotal de grupo

el codigo es:
Código PHP:
<table class="Grid" cellspacing="0" cellpadding="0">
        <!-- BEGIN Section Report_Header -->
        <tr class="Row">
          <td colspan="14"><strong>Fecha: </strong><strong><?php echo strftime ("%d/%m/%Y"); ?></strong></td>
        </tr>
        
 
        <tr class="Caption">
          <th>Id</th> 
          <th>Concepto</th>
          <th>Proyecto</th>
          <th>Ruc</th>
           <th>Nombre</th>
          <th>Nemónico</th>
          <th>Serie</th>
          <th>Recibo</th>
          <th>Orden</th>
          <th>Subdependencia</th>
           <th>Partida</th>
          <th>Monto Bruto</th>
          <th>Retención</th>
          <th>Neto a Pagar </th>
          </tr>      
        
        <?php do{ ?>
<?php 
$grupoant
=$grupo;
$grupo=$RowOrden['dependencia'];
?>
<?php
if($grupoant != $grupo){
            
             
?> 
<tr class="Row">
          <td colspan="14"><strong>Dependencia: <?php echo $RowOrden["dependencia"]."-".$RowOrden["dep_nombre"]; ?></strong></td>
        </tr>
         
  <?php 
              
        
?>
       
        
        <tr class="Row">
          <td>
            <p align="center"><?php echo $RowOrden["id"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["concepto"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["proyecto"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["ruc"]; ?></p>
          </td> 
          <td nowrap>
            <p align="left"><?php echo $RowOrden["nombre"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["nemonico"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["serie"]; ?></p>
          </td> 
          <td>
            <p align="left"><?php echo $RowOrden["recibo"]; ?></p>
          </td> 
          <td nowrap>
            <p align="center"><?php echo $RowOrden["norden"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["subdep"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["partida"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["mtobruto"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["retencion"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["mtoneto"]; ?></p>
          </td>
        </tr>         <?php 

 
if($grupoant != $grupo){
     
             
$sub_total_retencion=array();
            
$sub_total_mtobruto=array();
            
$sub_total_mtoneto=array();
            
//SubTotal Retenciones
            
$sub_total_retencion[]= $RowOrden['retencion'];
            
//SubTotal Monto Bruto
            
$sub_total_mtobruto[] = $RowOrden['mtobruto'];
            
//SubTotal Monto Neto
            
$sub_total_mtoneto[]= $RowOrden['mtoneto'];
            
            
 
?>
<tr class="SubTotal">
          <td>&nbsp;</td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
          <td>&nbsp; </td> 
          <td><strong>Subtotal:</strong></td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_mtobruto)); ?></td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_retencion)); ?></td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_mtoneto)); ?></td>
         
        </tr>
        <?php 
                  
?>
           
             
            <?php 
            
//Total Retenciones
            
$total_retencion[] = $RowOrden['retencion'];
            
//Total Monto Bruto
            
$total_mtobruto[] = $RowOrden['mtobruto'];
            
//Total Monto Neto
            
$total_mtoneto[] = $RowOrden['mtoneto']; ?>

    <?php        } while ($RowOrden=mysql_fetch_assoc($_pagi_result)); ?>
debe de imprimir los subtotales al finalizar cada grupo....
o talvez una mejor manera de hacerlo por que estoy utilizando array_sum, para la suma, pero derrepente prodria ser por algun sum(campo) en la consulta como lo haria gracias..
espero su ayuda gracias.-..
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]

Última edición por GatorV; 01/04/2009 a las 14:40
  #25 (permalink)  
Antiguo 01/04/2009, 14:46
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: Reporte por grupos en php mysql

No veo que hayas si quiera tratado de intentar poner en practica lo que te comente, debes de asignar en tu array de subtotales en cada vuelta de tu array, y solamente resetear el valor al cambiar de grupo (a la hora de imprimir los subtotales).

Tal como lo tienes ahorita, solo se suma cuando se imprimen los subtotales, pero solo se suma el total del grupo actual, porque solamente entra una vez en el condicional, ve esto (PSEUDOCODIGO):
Código:
do {
     if( new_group() {
           print_headers_grupo()
     }
      print_data($row)
     if( new_group() ) {
            $subtotal = array();
            $subtotal[] = $row['total'];
            print_subtotal( array_sum( $subtotal ) ); 
     }

     $totales[] = $row['total'];
} while ( $row = fetch_row() );
print_totales($totales);
Lo que te comento es que tienes que mover la asignación en cada vuelta:
Código:
do {
     if( new_group() {
           print_headers_grupo()
     }
      print_data($row)
     if( new_group() ) {
            print_subtotal( array_sum( $subtotal ) ); 
            $subtotal = array();
     }
     $subtotal[] = $row['total'];
     $totales[] = $row['total'];
} while ( $row = fetch_row() );
print_totales($totales);
Saludos.
  #26 (permalink)  
Antiguo 01/04/2009, 15:28
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

Gracias amigo ahora me quedo asi mira..


como si estubiera corriendo un grupo el ultimo..
hice a nivel del segundo pseudocodigo

gracias GatorV
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #27 (permalink)  
Antiguo 01/04/2009, 15:44
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: Reporte por grupos en php mysql

Prueba en asignar antes de imprimir.
Código:
do {
     $subtotal[] = $row['total'];
     $totales[] = $row['total'];
     if( new_group() {
           print_headers_grupo()
     }
      print_data($row)
     if( new_group() ) {
            print_subtotal( array_sum( $subtotal ) ); 
            $subtotal = array();
     }
} while ( $row = fetch_row() );
print_totales($totales);
Saludos.
  #28 (permalink)  
Antiguo 01/04/2009, 16:03
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

ahor sale asi :(



help amigoooo

el problema es con los subtotales.. como si no estubieran en su lugarrrr
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #29 (permalink)  
Antiguo 01/04/2009, 18:26
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: Reporte por grupos en php mysql

Pues si lo haces como te expuse en el pseudocodigo no deberias de tener problemas, revisa bien tu code.

Saludos.
  #30 (permalink)  
Antiguo 01/04/2009, 18:34
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Reporte por grupos en php mysql

estoy haciendo exactament igual como dices:

Código PHP:
        <?php
         
do{ ?>
<?php 
$grupoant
=$grupo;

$grupo=$RowOrden['dependencia'];

?>
<?php
if($grupoant != $grupo){
            
             
?> 
           
<tr class="Row">
          <td colspan="14"><strong>Dependencia: <?php echo $RowOrden["dependencia"]."-".$RowOrden["dep_nombre"]; ?></strong></td>
        </tr>
           
  <?php 
              
        
?>

        <tr class="Row">
          <td>
            <p align="center"><?php echo $RowOrden["id"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["concepto"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["proyecto"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["ruc"]; ?></p>
          </td> 
          <td nowrap>
            <p align="left"><?php echo $RowOrden["nombre"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["nemonico"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["serie"]; ?></p>
          </td> 
          <td>
            <p align="left"><?php echo $RowOrden["recibo"]; ?></p>
          </td> 
          <td nowrap>
            <p align="center"><?php echo $RowOrden["norden"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["subdep"]; ?></p>
          </td> 
          <td>
            <p align="center"><?php echo $RowOrden["partida"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["mtobruto"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["retencion"]; ?></p>
          </td> 
          <td style="TEXT-ALIGN: right">
            <p align="right"><?php echo $RowOrden["mtoneto"]; ?></p>
          </td>
        </tr>
          <?php 
         
if($grupoant != $grupo){
 
?>
<tr class="SubTotal">
          <td>&nbsp;</td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp; </td> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
          <td>&nbsp; </td> 
          <td><strong>Subtotal:</strong></td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_mtobruto)); ?></td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_retencion)); ?></td> 
          <td style="TEXT-ALIGN: right" valign="baseline"><?php printf("%.2f",array_sum($sub_total_mtoneto)); ?></td>
         
        </tr>
        <?php 
             $sub_total_retencion
=array();
            
$sub_total_mtobruto=array();
            
$sub_total_mtoneto=array();
                    
        } 
        
//SubTotal Retenciones
            
$sub_total_retencion[]= $RowOrden['retencion'];
            
//SubTotal Monto Bruto
            
$sub_total_mtobruto[] = $RowOrden['mtobruto'];
            
//SubTotal Monto Neto
            
$sub_total_mtoneto[]= $RowOrden['mtoneto'];
              
            
            
//Total Retenciones
            
$total_retencion[] = $RowOrden['retencion'];
            
//Total Monto Bruto
            
$total_mtobruto[] = $RowOrden['mtobruto'];
            
//Total Monto Neto
            
$total_mtoneto[] = $RowOrden['mtoneto']; ?>

    <?php        } while ($RowOrden=mysql_fetch_assoc($_pagi_result)); ?>
espero tu ayuda..
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 09:02.