Ir para conteúdo

POWERED BY:

Arquivado

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

Henze

[Resolvido] Dificuldade em listar apenas o ano de uma data no SQL

Recommended Posts

Boa noite Galera,

 

Não sei se esta é a melhor forma de fazer o que quero, mas foi a primeira forma que me veio à cabeça:

 

Estou tendo dificuldades em relacionar apenas o ano de inclusão das linhas da minha tabela de notícias no SQL.

 

Estou criando uma página onde pretendo dar a opção dos usuários listarem as notícias por ano, mas pra isso preciso capturar no BD os anos que tenho alguma notícia.

 

Abaixo o exemplo de como estou fazendo, mas que me responde com erro no PHP:

 

$not = mysql_query("SELECT DISTINCT SUBSTR(data_noticias,1,4) FROM noticias");
while($linha = mysql_fetch_array($not)){
$ano = $linha['data_noticias'];
echo "$ano";
}

 

A consulta quando executo no SQL me responde exatamente o que preciso, porém no PHP não consigo exibir o resultado...

 

Estou desde ontem preso nisso e não consigo ver onde está o erro... alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não lembro agora como é o comportamento do mysql nesse caso, mesmo usando uma única tabela e um único campo, mas sempre que utilizo funções prefiro especificar um alias.

 

no seu caso seria isso:

SUBSTR(data_noticias,1,4) AS data_noticias

 

veja se resolve..

 

 

 

 

 

obs:

isso pode não ser a resolução do problema e tampouco quer dizer que seja a única melhor técnica do universo. Apenas tente.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Hinom,

 

Primeiramente obrigado pela ajuda.

 

No SQL a consulta funcionou perfeitamente conforme a que eu estava usando, mas na hora de exibir com o PHP, dá erro da mesma forma...

 

O erro no PHP:

Notice: Undefined index: data_noticias

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo com alias ?

 

"SELECT DISTINCT SUBSTR(data_noticias,1,4) AS data_noticias FROM noticias"

 

 

de qualquer modo, faça assim

 

$not = mysql_query("SELECT DISTINCT YEAR(data_noticias) AS data_noticias FROM noticias");
while($linha = mysql_fetch_array($not)){
   print_r($linha); exit; // apenas para debugar
   $ano = $linha['data_noticias'];
   echo $ano;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Hinom,

 

Correção, na verdade tinha resolvido da forma que você colocou o SQL.

 

Apenas precisava tirar a linha de Debug...

 

Ficou assim e está funcionando perfeitamente:

 

$not = mysql_query("SELECT DISTINCT YEAR(data_noticias) AS data_noticias FROM noticias ORDER BY data_noticias DESC");
while($linha = mysql_fetch_array($not))
{
$ano = $linha['data_noticias'];
echo "<a href=\"noticias-ano.php?ano=$ano\"><p>$ano</p></a>";
}

 

 

Valeu mesmo pela ajuda e como sou mais da área de redes, qualquer coisa que eu puder ajudar, estamos ae...

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.