Ir para conteúdo

POWERED BY:

Arquivado

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

Anderson Tosatti

Agrupar dados de uma mesma coluna

Recommended Posts

cara, (eu acho) que deveria ficar algo assim:

<table width="72%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>

<?php 

$sql = "select * from contasp WHERE vencimento <= '$date' AND enviado != 'S' group by favorecido order by favorecido, vencimento ASC";
$result = mysql_query($sql) or die(mysql_error());
$total = mysql_num_rows ($result);

while($linha = mysql_fetch_array($result)) {

echo "<th bgcolor=\"#333333\">Favorecido  \n";
echo "<th colspan=\"5\" align=\"left\" bgcolor=\"#333333\">\n";
echo $linha['favorecido'];
echo "</tr> <tr>\n";
echo "\n";

echo "<tr><th>";
echo $linha['id']; 
	echo"<th> ";
	echo $linha['formapgto'];
	echo"<th> ";
	echo $linha['titulo'];
echo"<th> ";
echo $linha['descricao'];
	echo"<th> ";
echo $linha['valor'];
echo $linha['vencimento'];
echo "</tr>";

?>


<? } ?>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloquei da forma abaixo e ele já está exibindo como eu quero, porém só o primeiro resultado da lista de favorecidos:

 

<table width="72%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<?php 

$sql = "select * from contasp WHERE vencimento <= '$date' AND enviado != 'S' ORDER by vencimento ASC";
$result = mysql_query ($sql, $marechal) or die(mysql_error());
$total = mysql_num_rows ($result); 
while ($linha = mysql_fetch_array ($result)) {

   $favorecido = $linha["favorecido"];


?>
 <th bgcolor="#333333">Favorecido  
 <th colspan="5" align="left" bgcolor="#333333">  <?php echo $linha['favorecido']; ?></tr>

<tr>
<th width="10%"><b>ID</b></td>
<th width="20%"><b>Forma de pagamento</b></td>
<th width="17%"><b>Titulo</b></td>
<th width="26%"><b>Descrição</b></td>
<th width="14%"><b>Valor</b></td>
<th width="13%"><b>Vencimento</b></td>
</tr>

<tr>
<?php 

$sql = "select * from contasp WHERE vencimento <= '$date' AND enviado != 'S' order by favorecido, vencimento ASC";
$result = mysql_query($sql) or die(mysql_error());
$total = mysql_num_rows ($result);

while($linha = mysql_fetch_array($result)) {

       $id = $linha["id"];
$data = $linha["data"];
$favorecido1 = $linha["favorecido"];
$tipodespesa = $linha["tipodespesa"];
$formapgto = $linha["formapgto"];
$vencimento = $linha["vencimento"];

        if ($favorecido == $favorecido1) {

?>
 <th> <?php echo $linha['id']; ?> 
 <th>  <?php echo $linha['formapgto']; ?>
 <th>  <?php echo $linha['titulo']; ?>
 <th>  <?php echo $linha['descricao']; ?>
 <th>  <?php echo $linha['valor']; ?>
 <th>  <?php echo $linha['vencimento']; ?>
</tr>
<? 
} 
}
}
?>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, corrigi o codigo (não tinha postado a parte que deve ser "fixa" e não tinha fechado as <th>:

 

<?php 

$sql = "select * from contasp WHERE vencimento <= '$date' AND enviado != 'S' group by favorecido order by favorecido, vencimento ASC";
$result = mysql_query($sql) or die(mysql_error());
$total = mysql_num_rows ($result);
?>
<table width="72%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<th bgcolor="#333333">Favorecido  
 <th colspan="5" align="left" bgcolor="#333333">  <?php echo $linha['favorecido']; ?></tr>

<tr>
<th width="10%"><b>ID</b></td>
<th width="20%"><b>Forma de pagamento</b></td>
<th width="17%"><b>Titulo</b></td>
<th width="26%"><b>Descrição</b></td>
<th width="14%"><b>Valor</b></td>
<th width="13%"><b>Vencimento</b></td>
</tr>

<?php
while($linha = mysql_fetch_array($result)) {


echo "<tr><th>";
echo $linha['id']; 
	echo"</th> ";
echo"<th> ";
	echo $linha['formapgto'];
	echo"</th> ";
echo"<th> ";
	echo $linha['titulo'];
	echo"</th> ";
echo"<th> ";
echo $linha['descricao'];
 	echo"</th> ";
echo"<th> ";
echo $linha['valor'];
	echo"</th> ";
echo"<th> ";
echo $linha['vencimento'];
echo "</tr>";

?>


<? } ?>
</table>

 

Agora vou tentar explicar:

Depois da busca no banco de dados, o que estiver antes da função while é "fixo", e o que esta dentro da função não. ou seja.

 

dentro da while eu coloquei para que crie uma coluna e 6 linhas para cada resultado.

entao dessa vez deve dar certo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não foi, dessa forma que você postou o nome do favorecido fica em branco e eu acho que precisava do um while ali, justamente para ele me listar todos os favorecidos do período tb.

Da uma olhada do jeito que eu postei, eu devo estar errando algum detalhe pra ele não exibir todos os resultados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa eu ver se entendi,

o codigo que você postou exibi todos os resultados, porem de apenas um favorecido...

dessa forma:

 

-------------------------------------------------------------------

FAVORECIDO: 001

ID | FORM DE PAGAMENT | TITULO | DESCRIÇÃO | VALOR | VENCIMENTO |

01 | 000000000000000001 | 000001 | 000000001 | 00001 | 0000000001 |

02 | 000000000000000002 | 000002 | 000000002 | 00002 | 0000000002 |

03 | 000000000000000003 | 000003 | 000000003 | 00003 | 0000000003 |

07 | 000000000000000004 | 000004 | 000000004 | 00004 | 0000000004 |

-------------------------------------------------------------------

 

e você quer que fique dessa forma:

 

 

FAVORECIDO: 001

ID | FORMA DE PAGAMENTO | TITULO | DESCRIÇÃO | VALOR | VENCIMENTO |

01 | 000000000000000001 | 000001 | 000000001 | 00001 | 0000000001 |

02 | 000000000000000002 | 000002 | 000000002 | 00002 | 0000000002 |

03 | 000000000000000003 | 000003 | 000000003 | 00003 | 0000000003 |

04 | 000000000000000004 | 000004 | 000000004 | 00004 | 0000000004 |

 

FAVORECIDO: 002

ID | FORMA DE PAGAMENTO | TITULO | DESCRIÇÃO | VALOR | VENCIMENTO |

01 | 000000000000000001 | 000001 | 000000001 | 00001 | 0000000001 |

02 | 000000000000000002 | 000002 | 000000002 | 00002 | 0000000002 |

03 | 000000000000000003 | 000003 | 000000003 | 00003 | 0000000003 |

04 | 000000000000000004 | 000004 | 000000004 | 00004 | 0000000004 |

 

FAVORECIDO: 003

ID | FORMA DE PAGAMENTO | TITULO | DESCRIÇÃO | VALOR | VENCIMENTO |

01 | 000000000000000001 | 000001 | 000000001 | 00001 | 0000000001 |

02 | 000000000000000002 | 000002 | 000000002 | 00002 | 0000000002 |

03 | 000000000000000003 | 000003 | 000000003 | 00003 | 0000000003 |

04 | 000000000000000004 | 000004 | 000000004 | 00004 | 0000000004 |

 

é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente

 

ele ta me exibindo isso:

 

Favorecido Ricardo Ito Nakashima Vidros ME

ID Forma de pagamento Titulo Descrição Valor Vencimento

220 Boleto SNF100053 Peças p/ estoque 155.20 2012-10-06

230 Boleto Pedido 100117 Peças p/ estoque 2997.30 2012-10-09

 

se eu dou um echo $total ele mostra que tem 33 favorecidos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui um progresso, ele já ta exibindo da forma que eu quero, porém ele ta repetindo os resultados dos fornecedores. Cada conta que o fornecedor possui ele exibe todos os resultados dele, ou seja, se o fornecedor tiver 5 contas cadastradas ele ta exibindo 5 vezes as 5 contas.

Alguem sabe como resolver?

 

<table width="838" border="1" align="center" cellspacing="0" class="byline2">
 <tr>
   <td colspan="6" align="center"><h1><strong>TESTE</strong></h1></td>
 </tr>
 <tr>
 <?php 
$lista = mysql_query("select * from contasp WHERE vencimento <= '$date' AND enviado != 'S' ORDER by vencimento ASC"); 
while ($dados = mysql_fetch_array($lista)) { 
$favorecido = $dados["favorecido"]; 
?> 
   <td width="146" bgcolor="#333333">Fornecedor</td>
   <td colspan="5" bgcolor="#333333"><? echo $dados ['favorecido']; ?></td>
 </tr>
 <tr>
   <td><strong>id</strong></td>
   <td width="156"><strong>Forma de Pagamento</strong></td>
   <td width="114"><strong>Título</strong></td>
   <td width="146"><strong>Descrição</strong></td>
   <td width="142"><strong>Valor</strong></td>
   <td width="108"><strong>Vencimento</strong></td>
 </tr>
 <?php   
$agrupa = mysql_query("select * from contasp WHERE favorecido = '$favorecido' AND vencimento <= '$date' AND enviado != 'S' ORDER BY vencimento ASC"); 
while ($var = mysql_fetch_array($agrupa)){ 

   $id = $var["id"];
$data = $var["data"];
$favorecido1 = $var["favorecido"];
$tipodespesa = $var["tipodespesa"];
$formapgto = $var["formapgto"];
$vencimento = $var["vencimento"];

?> 
 <tr>
   <td><? echo $var['id']; ?></td>
   <td><? echo $var['formapgto']; ?></td>
   <td><? echo $var['titulo']; ?></td>
   <td><? echo $var['descricao']; ?></td>
   <td><? echo $var['valor']; ?></td>
   <td><? echo $var['vencimento']; ?></td>
 </tr>
 <?php } }?>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema. Inseri um GROUP BY na primeira query e agora ele ta listando apenas uma vez o fornecedor e todas as contas dele logo abaixo. Vou colocar a solução abaixo, caso alguem precise utilizar a mesma solução que eu.

Agradeço a todos que me ajudaram no tópico.

 

 

<table width="838" border="1" align="center" cellspacing="0" class="byline2">
 <tr>
   <td colspan="6" align="center"><h1><strong>TESTE</strong></h1></td>
 </tr>
 <tr>
 <?php 
$lista = mysql_query("select * from contasp WHERE vencimento <= '$date' AND enviado != 'S' GROUP BY favorecido ORDER by vencimento, favorecido ASC"); 
while ($dados = mysql_fetch_array($lista)) { 
$favorecido = $dados["favorecido"]; 
?> 
   <td width="146" bgcolor="#333333">Fornecedor</td>
   <td colspan="5" bgcolor="#333333"><? echo $dados ['favorecido']; ?></td>
 </tr>
 <tr>
   <td><strong>id</strong></td>
   <td width="156"><strong>Forma de Pagamento</strong></td>
   <td width="114"><strong>Título</strong></td>
   <td width="146"><strong>Descrição</strong></td>
   <td width="142"><strong>Valor</strong></td>
   <td width="108"><strong>Vencimento</strong></td>
 </tr>
 <?php 
$agrupa = mysql_query("select * from contasp WHERE favorecido = '$favorecido' AND vencimento <= '$date' AND enviado != 'S' ORDER BY vencimento ASC"); 
while ($var = mysql_fetch_array($agrupa)){ 

       $id = $var["id"];
$data = $var["data"];
$favorecido1 = $var["favorecido"];
$tipodespesa = $var["tipodespesa"];
$formapgto = $var["formapgto"];
$vencimento = $var["vencimento"];

?> 
 <tr>
   <td><? echo $var['id']; ?></td>
   <td><? echo $var['formapgto']; ?></td>
   <td><? echo $var['titulo']; ?></td>
   <td><? echo $var['descricao']; ?></td>
   <td><? echo $var['valor']; ?></td>
   <td><? echo $var['vencimento']; ?></td>
 </tr>
 <?php 
}
} ?>
</table>

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.