saulo69 1 Denunciar post Postado Março 28, 2012 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
Vinicius Rangel 208 Denunciar post Postado Março 28, 2012 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
saulo69 1 Denunciar post Postado Março 28, 2012 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
Vinicius Rangel 208 Denunciar post Postado Março 28, 2012 confira se o nome da variavel que eu coloquei a SelectAtas esta correta. Compartilhar este post Link para o post Compartilhar em outros sites
saulo69 1 Denunciar post Postado Março 28, 2012 Oi Vinicius, valeu pela ajuda! Tinha uma variável com o nome faltando o "s", mas continua mostrando o erro... Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Março 28, 2012 Poste o erro que aparece e também o código que esta na linha do erro.. Compartilhar este post Link para o post Compartilhar em outros sites
saulo69 1 Denunciar post Postado Março 29, 2012 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
Vinicius Rangel 208 Denunciar post Postado Março 29, 2012 Certifique que a variável $SelectAtas retorna um array, certifique que você fez um for antes e que existe um campo chamado ano que retorna na consulta.. Compartilhar este post Link para o post Compartilhar em outros sites
saulo69 1 Denunciar post Postado Março 29, 2012 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
Vinicius Rangel 208 Denunciar post Postado Março 29, 2012 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