Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou fazendo um relatório e dividi o resultado do relatório por grupo. até aí tudo bem, está gerando separado por grupo, minha dúvida é o seguinte, como colocar o valor total de cada grupo?
Segue o exemplo de meu código.
<fieldset>
<legend>Relatório</legend>
<?php $nome_grupo = ''; ?>
<?php while($dados = $conexao->busca($sql)){ ?>
<?php if($nome_grupo != $dados['grupo']){ ?>
<legend><br><?php echo $dados['grupo']; ?></legend>
<?php } ?>
<table id="table" width="100%" border="1">
<?php if($nome_grupo != $dados['grupo']){ ?>
<tr>
<td><center><b>Item1</b></center></td>
<td><center><b>Item2</b></center></td>
<td><center><b>Item3</b></center></td>
<td><center><b>Item4</b></center></td>
<td><center><b>Item5</b></center></td>
<td><center><b>Item6</b></center></td>
</tr>
<?php } ?>
<tr bgcolor="#EFEFEF" onMouseOver="this.style.backgroundColor='#D1D7DC'" onMouseOut="this.style.backgroundColor='#EFEFEF'">
<td><?php echo $dados['Item1']; ?></td>
<td><?php echo $dados['Item2r']; ?></td>
<td><?php echo $dados['Item3']; ?></td>
<td><?php echo $dados['Item4']; ?></td>
<td>R$ <?php echo $dados['Item5'];?></td>
<td><?php echo $dados['Item6']; ?></td>
</tr>
<?php if($nome_grupo != $dados['grupo']){ ?>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>Tota de cada grupo:</td>
</tr>
<?php } ?>
</table>
<?php $nome_grupo = $dados['grupo']; }} ?>
</fieldset>
Vejam o código, alguma diga será bem vinda, obg.
Mais o meu select não vai ajudar em nada para a resolução da minha dúvida, eu quero saber como coloco o a tabela no final de cada grupo, a soma eu sei fazer.
Então, cara .. eu não sei como está seu select, vou chutar aqui então
C:\Users\Andrey>cd ..
C:\Users>cd ..
C:\>cd \dev\mysql\bin\
C:\dev\mysql\bin>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.41 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use ex;
Database changed
mysql> create table relatorio(
-> id int( 11 ) not null,
-> grupo varchar( 10 ) not null,
-> item mediumint( 16 ) not null,
-> preco decimal( 8, 2 ) not null
-> )Engine = InnoDB;
Query OK, 0 rows affected (0.19 sec)
mysql> insert into relatorio values( 0, 'Grupo 1', 'Item 1', '9.90' );
Query OK, 1 row affected, 0 warning (0.06 sec)
mysql> insert into relatorio values( 0, 'Grupo 1', 'Item 2', '19.90' );
Query OK, 1 row affected, 0 warning (0.03 sec)
mysql> insert into relatorio values( 0, 'Grupo 1', 'Item 3', '82.00' );
Query OK, 1 row affected, 0 warning (0.05 sec)
mysql> select * from relatorio;
+----+---------+------+-------+
| id | grupo | item | preco |
+----+---------+------+-------+
| 0 | Grupo 1 | 0 | 9.90 |
| 0 | Grupo 1 | 0 | 19.90 |
| 0 | Grupo 1 | 0 | 82.00 |
+----+---------+------+-------+
3 rows in set (0.00 sec)
mysql> select sum( preco ) as totalPorGrupo, id, grupo, item from relatorio;
+---------------+----+---------+------+
| totalPorGrupo | id | grupo | item |
+---------------+----+---------+------+
| 111.80 | 0 | Grupo 1 | 0 |
+---------------+----+---------+------+
1 row in set (0.00 sec)
Andrey Knupp valeu pelo exemplo, mais eu estou querendo saber como separar o resultado da consulta por grupo, veja meu html lá em cima, separar já deu certo, agora quero apenas criar uma linha depois de cada tabela de cada grupo com o valor total.
Ok, veja se entende melhor:
mysql> insert into relatorio values( 1, 'Grupo 2', 'Item 1', '1290.00' );
Query OK, 1 row affected, 0 warning (0.04 sec)
mysql> insert into relatorio values( 1, 'Grupo 2', 'Item 2', '630.00' );
Query OK, 1 row affected, 0 warning (0.05 sec)
mysql> insert into relatorio values( 1, 'Grupo 2', 'Item 3', '296.50' );
Query OK, 1 row affected, 0 warning (0.05 sec)
mysql> select sum( preco ) as totalPorGrupo, id, grupo, item from relatorio;
+---------------+----+---------+------+
| totalPorGrupo | id | grupo | item |
+---------------+----+---------+------+
| 2328.30 | 0 | Grupo 1 | 0 |
+---------------+----+---------+------+
1 row in set (0.00 sec)
mysql> select sum( preco ) as totalPorGrupo, id, grupo, item from relatorio group by grupo;
+---------------+----+---------+------+
| totalPorGrupo | id | grupo | item |
+---------------+----+---------+------+
| 111.80 | 0 | Grupo 1 | 0 |
| 2216.50 | 1 | Grupo 2 | 0 |
+---------------+----+---------+------+
2 rows in set (0.01 sec)
Basta você fazer seu while nisso aí, e exibir puxando do array normalmente como você está fazendo
Fala Adson, beleza?
Não cheguei a ver o que o pessoal postou aí, mas tenta o código abaixo.
Eu modifiquei seu while e botei um foreach para poder simular com o array, mas basicamente você precisa restaurar o seu while e sem a primeira parte do código.
<?php
for ($i=1; $i<=10; $i++){
$x = 0;
while ($x < rand(5, 10)){
$arr = array(
'grupo' => 'grupo'.$i,
'Item1' => 'aaaaa',
'Item2r' => 'bbbbb',
'Item3' => 'ccccc',
'Item4' => 'ddddd',
'Item5' => 'eeeee',
'Item6' => 'fffff',
);
$array[] = $arr;
$x +=1;
}
}
?>
<!-- Exclui daqui pra cima -->
<fieldset>
<legend>Relatório</legend>
<?php
$nome_grupo = '';
$nome_old = '';
$total = 0;
$aux = 0;
?>
<table id="table" width="100%" border="1">
<?php foreach ($array as $dados) { // substitiu pelo seu while, sql e talz
if($nome_grupo != $dados['grupo']){
$nome_grupo = $dados['grupo'];
if ($total > 1){
?>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>Tota de cada grupo: <?php echo $total;?></td>
</tr>
<?php }
$total = 1;
?>
<tr>
<td colspan="6">
<?php echo $dados['grupo']; ?>
</td>
</tr>
<tr>
<td><center><b>Item1</b></center></td>
<td><center><b>Item2</b></center></td>
<td><center><b>Item3</b></center></td>
<td><center><b>Item4</b></center></td>
<td><center><b>Item5</b></center></td>
<td><center><b>Item6</b></center></td>
</tr>
<?php }
else {
$aux = 0;
$total +=1;
}
?>
<tr bgcolor="#EFEFEF" onMouseOver="this.style.backgroundColor='#D1D7DC'" onMouseOut="this.style.backgroundColor='#EFEFEF'">
<td><?php echo $dados['Item1']; ?></td>
<td><?php echo $dados['Item2r']; ?></td>
<td><?php echo $dados['Item3']; ?></td>
<td><?php echo $dados['Item4']; ?></td>
<td>R$ <?php echo $dados['Item5'];?></td>
<td><?php echo $dados['Item6']; ?></td>
</tr>
<?php } ?>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>Tota de cada grupo: <?php echo $total;?></td>
</tr>
</table>
</fieldset>
Forte abraço.
Jader Bittencourt, parabéns você entendeu bem oq eu tava querendo, deu certo amigo, muito obg pela ajuda, abraço.
Mostra seu SQL :P