Ir para conteúdo
Fórum Script Brasil
  • 0

Agrupar dados vindos do mysql


saulo69

Pergunta

Bom dia 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>";

}

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Saulo posta o codigo de HTML onde você ta dando print nesses arquivos...

por que se eu entendi bem...

ao invez de ficar

|-------------------------------|

|----------------|---01.pdf----|

|----------------|---02.pdf----|

|---MARÇO----|---03.pdf----|

|----------------|---04.pdf----|

|-------------------------------|

Fica

|-------------------------------|

|---MARÇO----|---05.pdf----|

|---MARÇO----|---06.pdf----|

|---MARÇO----|---08.pdf----|

|-------------------------------|

Sendo assim

quando você der echo dentro do WHILE, tire a função de mostrar o nome... deixe ela fora do WHILE assim não repete o nome do mês .. somente a do arquivo.

Link para o comentário
Compartilhar em outros sites

  • 0
$ano_aux = "";
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>";
 }
    }

Link para o comentário
Compartilhar em outros sites

  • 0

Não tem mais nada?

por que se for so isso não estou vendo problema.

ele ta imprimindo a Data e o Arquivo.

a menos que o nome do mês que tu se referiu seja a Data em especifico.

dai vai muda o caso agente vai ter que usar condição...

faz o seguinte poem o sql do seu banco vou instala seu script aqui com banco e testar.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha, utiliza condição para cada mês .. da um explode na data pega somente o digito do mês

então faz a condição

$SelectAtas = mysql_query("SELECT data_publicacao FROM atas WHERE YEAR(data_publicacao) = YEAR(DATE(NOW())) ORDER BY data_publicacao DESC")or die("Erro na seleção".mysql_error());

$RowAta = mysql_fetch_assoc($SelectAtas);
$data = explode $RowAta['data_publicacao'] A IDEIA PRINCIPAL
If ($data == 5)    // se a data depois do explode foi = a 5 ou seja maio )

{ 

$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());

$RowAta = mysql_fetch_assoc($SelectAtas);

$AtaData = $RowAta['data_publicacao'];
    desconverte_data($AtaData);
    $AtaDataAgrupada = substr($AtaData, 3, 7);
    $AtaMes = substr($AtaData, 3, 2);
echo"Ata da Reunião - $AtaData<br>";


while($RowAta = mysql_fetch_assoc($SelectAtas)){
    $AtaNome = $RowAta['arquivo'];
    
  }
       }

bem para ver se tu entendeu...

eu filtrei o echo

se o Mes foi 5 então vamos fazer um select semente do mês 5

então vai ser impresso a data ou seja o mês e depois dentro do while os arquivos.

Link para o comentário
Compartilhar em outros sites

  • 0

Saulo,

Fiz um exemplo rápido aki. Olhse se te ajuda!

$arrDados = array(
        array('MES' => 'Março','ARQUIVO' => '001.pdf'),
        array('MES' => 'Março','ARQUIVO' => '002.pdf'),
        array('MES' => 'Março','ARQUIVO' => '003.pdf'),
        array('MES' => 'Março','ARQUIVO' => '004.pdf'),
        array('MES' => 'Abril','ARQUIVO' => '005.pdf'),
        array('MES' => 'Abril','ARQUIVO' => '006.pdf'),
        array('MES' => 'Abril','ARQUIVO' => '007.pdf'),
        array('MES' => 'Maio','ARQUIVO' => '008.pdf'),
        array('MES' => 'Maio','ARQUIVO' => '009.pdf')
    );
    
    $arrAgrupado = array();
    
    
    foreach($arrDados as $arrLista){
        $arrAgrupado[$arrLista['MES']]['DADOS'][] = $arrLista;
    }

    
    echo '<table border="1">';
    foreach($arrAgrupado as $key => $value){
        echo '<tr><td rowspan="'. count($value['DADOS']) .'">' . $key . '</td>';
        foreach($value['DADOS'] as $arrArquivos) {
            echo '<td>' . $arrArquivos['ARQUIVO'] . '</td></tr>';
        }
    }
    echo '</table>';

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,1k
×
×
  • Criar Novo...