Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Frankie Hummel

relatorios php aninhado

Recommended Posts

Pessoal estou montando um relatório porém o retorno não é o que eu esperava monto o relatorio dessa forma:

 

<!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=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<table width="529" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td> </td>
    <td>produto</td>
    <td>preço</td>
    <td>valor</td>
    <td> </td>
  </tr>
</table>
<?php

$a = mysql_connect("127.0.0.1","root","");
$b = mysql_select_db("techall04");

        $sql = mysql_query("SELECT produto, data_cad, sum(preco_custo) as valores, preco_custo FROM produto WHERE data_cad between '2010-01-01' and '2010-12-12' GROUP by produto, data_cad, preco_custo, preco_custo ");
        while($resposta = mysql_fetch_array($sql)){
        
?>
<table width="529" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="40"> </td>
    <td width="190"><?php echo $resposta['produto']; ?></td>
    <td width="141"><?php echo $resposta['data_cad']; ?></td>
    <td width="117"><?php echo $resposta['preco_custo']; ?></td>
    <td width="41"> </td>
  </tr>
</table>
<?PHP

$sql2 = mysql_query("SELECT sum(preco_custo) as valores2 FROM produto WHERE data_cad between '2010-01-01' and '2010-12-12' GROUP by preco_custo ");
        while($resposta2 = mysql_fetch_array($sql2)){

?>
<table width="529" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="308"> </td>
    <td width="64">Total</td>
    <td width="117"><?php echo $resposta2['valores2']; ?></td>
    <td width="40"> </td>
  </tr>
</table>
<?php
}
}
?>
</body>
</html>

O retorno desse relatório é:

 

produto preço valor  
 bone 2010-03-01 1544.90  
 Total 1.00  
 Total 12.00  
 Total 12.44  
 Total 18.70  
 Total 150.00  
 Total 154.00  
 Total 159.82  
 Total 1544.90  
 Total 131313.12  
 bone 2010-08-01 18.70  
 Total 1.00  
 Total 12.00  
 Total 12.44  
 Total 18.70  
 Total 150.00  
 Total 154.00  
 Total 159.82  
 Total 1544.90  
 Total 131313.12  
 calca 2010-08-10 12.44  
 Total 1.00  
 Total 12.00  
 Total 12.44  
 Total 18.70  
 Total 150.00  
 Total 154.00  
 Total 159.82  
 Total 1544.90  
 Total 131313.12 

eu gostaria que fosse mostrado dessa forma:

 


<!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=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td>produto</td>
      <td>preço</td>
      <td>valor</td>
      <td></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td width="40" height="19"></td>
      <td width="190">bone</td>
      <td width="141">2010-03-01</td>
      <td width="117">1544.90</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="40" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td></td>
      <td> </td>
      <td>Total</td>
      <td>1544.90</td>
      <td></td>
    </tr>
    <tr>
      <td width="40"></td>
      <td width="190">sunga</td>
      <td width="141">2010-04-01</td>
      <td width="117">159.82</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="40" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td></td>
      <td> </td>
      <td>Total</td>
      <td>159.82</td>
      <td></td>
    </tr>
    <tr>
      <td width="40"></td>
      <td width="190">bone</td>
      <td width="141">2010-08-01</td>
      <td width="117">18.70</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="40" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
      <td width="190">calca</td>
      <td width="141">2010-08-10</td>
      <td width="117">12.44</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="40" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td></td>
      <td> </td>
      <td>Total</td>
      <td>31.14</td>
      <td></td>
    </tr>
    <tr>
      <td width="40"></td>
      <td width="190">jeans</td>
      <td width="141">2010-09-08</td>
      <td width="117">158.3</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="40" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
      <td width="190">short</td>
      <td width="141">2010-09-15</td>
      <td width="117">150.00</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="40" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td></td>
      <td> </td>
      <td>Total</td>
      <td>308.00</td>
      <td></td>
    </tr>
    <tr>
      <td width="40"></td>
      <td width="190">casaco</td>
      <td width="141">2010-10-10</td>
      <td width="117">154.00</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="40" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
      <td width="190">jaqueta</td>
      <td width="141">2010-10-10</td>
      <td width="117">1.00</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="40" border="0">
  <tbody>
    <tr>
      <td width="40"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td></td>
      <td> </td>
      <td>Total</td>
      <td>155.00</td>
      <td></td>
    </tr>
    <tr>
      <td width="40"></td>
      <td width="190">camisa</td>
      <td width="141">2010-12-01</td>
      <td width="117">12.00</td>
      <td width="41"></td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td width="283"></td>
      <td width="89">Total</td>
      <td width="157">12.00</td>
    </tr>
  </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="529" border="0">
  <tbody>
    <tr>
      <td width="283"></td>
      <td width="89">Total geral</td>
      <td width="157">2.210,86</td>
    </tr>
  </tbody>
</table>
<p> </p>
</body>
</html>

Eu gostaria de monta-lo todo separado e calculado por Data. Tipo mês 09 foi tantos produto deu tanto mês 10 foram tantos produto deu tanto e no final um somatório geral

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql = mysql_query("SELECT produto, data_cad, sum(preco_custo) as valores, preco_custo FROM produto WHERE data_cad between '2010-01-01' and '2010-12-12' GROUP by produto, data_cad, preco_custo, preco_custo ");

Provavelmente o GROUP BY que tá fazendo ele retornar um único resultado.

 

E incorpore a impressão das duas tabelas, criando uma única, tirando a segunda query:

 

<table width="529" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="40"> </td>
    <td width="190"><?php echo $resposta['produto']; ?></td>
    <td width="141"><?php echo $resposta['data_cad']; ?></td>
    <td width="117"><?php echo $resposta['preco_custo']; ?></td>
    <td width="41"> </td>
  </tr>
  <tr>
    <td width="308"> </td>
    <td width="64">Total</td>
    <td width="117"><?php echo $resposta['valores']; ?></td>
    <td width="40"> </td>
  </tr>

</table>

Vê se dá certo... abraço!

 

EDIT:

 

opss.. entendi melhor agora o que problema. É o GROUP BY da segunda query:

 

$sql2 = mysql_query("SELECT sum(preco_custo) as valores2 FROM produto WHERE data_cad between '2010-01-01' and '2010-12-12' GROUP by preco_custo ");
Mude para:

$sql2 = mysql_query("SELECT sum(preco_custo) as valores2 FROM produto WHERE data_cad between '2010-01-01' and '2010-12-12' GROUP by valores2 ");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu certo. Veja se fiz corretamente?

 

<!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=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<table width="529" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td> </td>
    <td>produto</td>
    <td>preço</td>
    <td>valor</td>
    <td> </td>
  </tr>
</table>
<?php

$a = mysql_connect("127.0.0.1","root","");
$b = mysql_select_db("techall04");

        $sql = mysql_query("SELECT produto, data_cad, sum(preco_custo) as valores, preco_custo FROM produto WHERE data_cad between '2010-01-01' and '2010-12-12' GROUP by produto, data_cad, preco_custo, preco_custo ");
        while($resposta = mysql_fetch_array($sql)){
		
		$sql2 = mysql_query("SELECT sum(preco_custo) as valores2 FROM produto WHERE data_cad between '2010-01-01' and '2010-12-12' GROUP by preco_custo ");
        while($resposta2 = mysql_fetch_array($sql2)){
        
?>
<table width="529" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="40"> </td>
    <td width="190"><?php echo $resposta['produto']; ?></td>
    <td width="141"><?php echo $resposta['data_cad']; ?></td>
    <td width="117"><?php echo $resposta['preco_custo']; ?></td>
    <td width="41"> </td>
  </tr>
  <tr>
    <td width="308"> </td>
    <td width="64">Total</td>
    <td width="117"><?php echo $resposta['valores']; ?></td>
    <td width="40"> </td>
  </tr>

</table>
<?php
}
}
?>
</body>
</html>

feio tudo errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, seu problema é com a montagem da query e não com a exibição no PHP. Então, moverei o tópico para o fórum de MySQL, onde o pessoal pode ajudar melhor a montar a query. Para isto, poste a estrutura da tabela produto.

 

Tópico Movido

PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif MySQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.