LAG 0 Denunciar post Postado Outubro 9, 2014 Olá galera do Imasters.Estou tentado fazer um menu tipo blog onde busco o ano e dentro desse ano, os meses.Até ai tudo bem o script mostra os resultados porem repete os anos para cada mês.Exemplo do resultado.201410201472013102012820126Eu uso esse select para conseguir os dados; $bbb = DB::getConn()->prepare("SELECT YEAR(data) as ano, MONTH(data) as mes FROM post GROUP BY ano,mes ORDER BY data DESC"); $bbb->execute(); while ($dados = $bbb->fetch(PDO::FETCH_ASSOC)){ Se alguém puder me ajudar ou dar uma luz.att, Compartilhar este post Link para o post Compartilhar em outros sites
FgR 4 Denunciar post Postado Outubro 9, 2014 A maneira mais simples eu creio ser utilizando um bloco condicional em PHP e nao direto no SQL. algo como: $anoAnterior = 0; while ($dados.... if ($dados ['ano'] != $anoAnterior){ echo ($dados ['ano']); echo($dados ['mes']); }else { echo ($dados ['mes']); } Compartilhar este post Link para o post Compartilhar em outros sites
LAG 0 Denunciar post Postado Outubro 9, 2014 A maneira mais simples eu creio ser utilizando um bloco condicional em PHP e nao direto no SQL. algo como: $anoAnterior = 0; while ($dados.... if ($dados ['ano'] != $anoAnterior){ echo ($dados ['ano']); echo($dados ['mes']); }else { echo ($dados ['mes']); } Eu nem havia pensado nisso. Vou tentar fazer isso, depois retorno. Compartilhar este post Link para o post Compartilhar em outros sites
LAG 0 Denunciar post Postado Outubro 9, 2014 FgR, apresentou o mesmo resultado. O código ficou assim: try{ $bbb = DB::getConn()->prepare("SELECT * FROM post ORDER BY data DESC"); $bbb->execute(); $anoAnterior = 0; while ($dados = $bbb->fetch(PDO::FETCH_ASSOC)){ if (FormataData1($dados['data']) != $anoAnterior){ echo (FormataData1($dados['data']))."<br>"; echo(FormataData2($dados['data']))."<br>"; }else { echo (FormataData2($dados['data']))."<br>"; } ?> <? }?> Resultado: 201410201407201310201208201206 Compartilhar este post Link para o post Compartilhar em outros sites
FgR 4 Denunciar post Postado Outubro 9, 2014 Ah sim, faltou dizer que o ano atual é igual ao ano anterior... Depois de: if (FormataData1($dados['data']) != $anoAnterior){ Insira: $anoAnterior = $dados['data']); A condição passa a ficar assim: if (FormataData1($dados['data']) != $anoAnterior){ $anoAnterior = $dados['data'];echo (FormataData1($dados['data']))."<br>";echo(FormataData2($dados['data']))."<br>";}else {echo (FormataData2($dados['data']))."<br>";} Compartilhar este post Link para o post Compartilhar em outros sites
LAG 0 Denunciar post Postado Outubro 9, 2014 beleza ficou ótimo. Fiz uma pequena adptação. 2014 10 (1) 7 (1) 2013 10 (1) 2012 8 (1) 6 (1) o Código para o pessoal se precisar: include 'conexoes.php'; $query=mysql_query("SELECT data, DATE_FORMAT(data,'%Y') as ano FROM post GROUP BY YEAR(data) ORDER BY ano DESC"); $anos_meses=""; while ($row_anos = mysql_fetch_assoc($query)) { $ano = $row_anos["ano"]; $anos_meses=$ano; ?> <br><a href="pagina/ano/<?=$anos_meses?>"><?=$anos_meses?></a><br> <? $sql1 = mysql_query("SELECT DISTINCT MONTH(data) AS mes, COUNT(*) AS contagem, id FROM post WHERE YEAR(data) = '$ano' GROUP BY mes ORDER BY mes DESC"); while ( ($row1 = mysql_fetch_array($sql1))) { ?> <a href="pagina/mes/<?=$row1['mes']?>.html"><?=$row1['mes']?></a> (<?=$row1['contagem']?>)<br> <? } } ?> Os links, são links amigáveis, fica a critério de cada um. Se alguém quiser alguma ajuda é só pedir. Compartilhar este post Link para o post Compartilhar em outros sites