• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

WoOo

[PHP + MySQL] Ordenação por data de forma decrescente

7 mensagens neste tópico

Saudações!

Estou aqui de volta de um script que me guarda umas noticias numa bd em mysql, depois quando as quero imprimir, quero que aparecam de forma decrescente por data, estou é com um problema, quando ha duas noticias do mesmo dia aparecem primeiro a mais "antiga desse" dia e so depois a mais recente, algo do genero:

2007-06-03 - noticia numero 3

2007-06-03 - noticia numero 4

Na bd o campo da data esta como date, e ele por defeito coloca no formato yyy-mm-dd, alguma forma de mudar para por exemplo dd-mm-yyyy. É que já tentei forçar o formato mas ele coloca sempre no formato por defeito!

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para o 1º problema, arranja um campo hora e fica resolvido.

O 2º problema deve-se, provavelmente, à ordenação, porque com a data no formato YYYY-MM-DD a ordenação é trivial; noutro formato qualquer era necessário fazer transformações para conseguir ordenar. Mas podes converter a data para o formato que quiseres depois de a obteres da base de dados, por isso não é um problema!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente, tinha la o tipo DATETIME e nem reparei, fui um pouco lerdo realmente, hehe

Quanto ao segundo queria saber se haveria outra forma, mas pronto, vou manipular o que vem da bd e dps imprimo como quiser

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu para datas costumo guardar o nº de segundos desde 1970 (é o date("U")) num campo "int", deste modo já conseguias ordenação ao segundo.

No que toca ao teu problema, tens também outra solução... suponho que tenhas um identificador interno para cada noticia, algo como "id" e "auto_increment", se sim é facil ordenares... basta usares esse campo :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu para datas costumo guardar o nº de segundos desde 1970 (é o date("U"))

O time() faz isso. :thumbsup:
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ou entao a opçao: CURRENT_TIMESTAMP no sql

se escolheres 1 campo de horas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu para datas costumo guardar o nº de segundos desde 1970 (é o date("U")) num campo "int", deste modo já conseguias ordenação ao segundo.

No que toca ao teu problema, tens também outra solução... suponho que tenhas um identificador interno para cada noticia, algo como "id" e "auto_increment", se sim é facil ordenares... basta usares esse campo :thumbsup:

So que o id maior não é sempre o conteudo mais actual, podes sempre adicionar algo hoje, mas queres que seja impresso como tendo sido adicionado dois dias atrás!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora