Ir para conteúdo

POWERED BY:

Arquivado

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

saulo69

[Resolvido] Agrupar dados

Recommended Posts

Boa tarde Pessoal,

Antes de postar minha duvida pesquisei muito e não achei nenhum resultado satisfatório...

 

Vamos lá, no meu banco tenho a seguinte tabela:

 

codigo | data_publicacao | arquivo

 

O que eu quero é fazer um select e agrupar por mês, exemplo:

 

codigo | data_publicacao | arquivo

1----------2012-03-01------001.pdf

2----------2012-03-02------002.pdf

3----------2012-03-03------003.pdf

4----------2012-04-04------004.pdf

5----------2012-05-05------005.pdf

6----------2012-05-06------006.pdf

7----------2012-05-07------007.pdf

8----------2012-05-08------008.pdf

Ficando dessa forma:

 

--------------001.pdf

-----março----002.pdf

--------------003.pdf

 

-----Abril----004.pdf

 

 

--------------005.pdf

------Maio----006.pdf

--------------007.pdf

--------------008.pdf

 

A questão toda é que eu não estou sabendo a logica de colocar apenas uma vez o nome do mês, como está no loop sempre fica o mês ao lado do respectivo arquivo, exemplo:

 

----março----001.pdf

----março----002.pdf

----março----003.pdf

 

----Abril----004.pdf

 

 

----Maio----005.pdf

----Maio----006.pdf

----Maio----007.pdf

----Maio----008.pdf

 

Segue meu código:

if(empty($_GET['ano'])){
$SelectAtas = mysql_query("SELECT * FROM atas WHERE YEAR(data_publicacao) = YEAR(DATE(NOW())) ORDER BY data_publicacao DESC")or die("Erro na seleção".mysql_error());
while($RowAta = mysql_fetch_assoc($SelectAtas)){
$AtaNome = $RowAta['arquivo'];
$AtaData = $RowAta['data_publicacao'];
desconverte_data($AtaData);
$AtaDataAgrupada = substr($AtaData, 3, 7);
$AtaMes = substr($AtaData, 3, 2);
echo"Ata da Reunião - $AtaData<br>";

} 

} else{
$AtaAno = $_GET['ano'];
$SelectAtas = mysql_query("SELECT * FROM atas WHERE YEAR(data_publicacao) = '$AtaAno'")or die("Erro na seleção".mysql_error());
while($RowAta = mysql_fetch_array($SelectAtas)){
$AtaNome = $RowAta['arquivo'];

echo"$AtaNome<br>";
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu vou postar aqui uma possível solução:

 

if(empty($_GET['ano'])){
$SelectAtas = mysql_query("SELECT * FROM atas WHERE YEAR(data_publicacao) = YEAR(DATE(NOW())) ORDER BY data_publicacao DESC")or die("Erro na seleção".mysql_error());

$count = count($SelectAtas);
for($i = 0; $i <= $count; ++$i){
  foreach($SelectAtas as $SelectAtas[$i]->ano => $selectAta){
      $arquivos = array($SelectAta->mes => $selectAta->arquivo);
  }
}
print_r($arquivos);

eu não testei apenas escrevi aqui mais creio que isso resolverá o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu vou postar aqui uma possível solução:

 

if(empty($_GET['ano'])){
$SelectAtas = mysql_query("SELECT * FROM atas WHERE YEAR(data_publicacao) = YEAR(DATE(NOW())) ORDER BY data_publicacao DESC")or die("Erro na seleção".mysql_error());

$count = count($SelectAtas);
for($i = 0; $i <= $count; ++$i){
  foreach($SelectAtas as $SelectAtas[$i]->ano => $selectAta){
      $arquivos = array($SelectAta->mes => $selectAta->arquivo);
  }
}
print_r($arquivos);

eu não testei apenas escrevi aqui mais creio que isso resolverá o problema.

 

deu esse erro:

Invalid argument supplied for foreach() in

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria que, por favor, a moderação retirasse o [resolvido];

Retorna o seguinte erro:

 

Warning: Invalid argument supplied for foreach() in /home/storage/3/ce/60/amepe1/public_html/NovoMobile/institucional/atas-amepe.php on line 8

 

código:

 

   foreach($SelectAtas as $SelectAtas[$i]->ano => $selectAta){

Compartilhar este post


Link para o post
Compartilhar em outros sites

O codigo é este:

if(empty($_GET['ano'])){
$SelectAtas = mysql_query("SELECT * FROM atas WHERE YEAR(data_publicacao) = YEAR(DATE(NOW())) ORDER BY data_publicacao DESC")or die("Erro na seleção".mysql_error());

$count = count($SelectAtas);
for($i = 0; $i <= $count; ++$i){
  foreach($SelectAtas as $SelectAtas[$i]->ano => $selectAta){
      $arquivos = array($SelectAta->mes => $selectAta->arquivo);
  }
}
print_r($arquivos);

 

no meu bando tem as seguintes colunas:

codigo | data_publicacao | arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim não existe o campo mês no banco de dados eu vou te explicar melhor o código.

 

if(empty($_GET['ano'])){
$SelectAtas = mysql_query("SELECT * FROM atas WHERE YEAR(data_publicacao) = YEAR(DATE(NOW())) ORDER BY data_publicacao DESC")or die("Erro na seleção".mysql_error());

$count = count($SelectAtas); //conta quantos valores possuem o array
for($i = 0; $i <= $count; ++$i){ // aqui ele faz uma contagem de 0 até quantos valores o array tem, se você tiver 10 valores ele vai retornar 1 2 3 4 no valor da variavel I
  foreach($SelectAtas as $SelectAtas[$i]->ano => $selectAta){ // aqui você percorre todo array SelectAtas e define o indice dele com o valor do ano que deveria vir do banco de dados, no caso existir um campo com o ano na bd e os valores você define os itens do array
      $arquivos = array($SelectAta->mes => $selectAta->arquivo); // aqui você faz a mesma coisa só que o indice dessa vez é o mês que tbm deveria vir da DB
  }
}
print_r($arquivos);

eu não sei de onde você esta recuperando o ano e o mês se não for da DB logicamente via dar erro eu armei essa estrutura pensando que você pegou o valor do ano e do mês do seu banco de dados.

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.