Ir para conteúdo

Arquivado

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

InSoNiA

[Resolvido] Consulta SQL

Recommended Posts

Olá pessoa como vão?

 

To com um probleminha que pra mim viro um PROBLEMAUMMM.

 

Seguinte, tenho uam tabela com a seguinte estrutura (campos):

 

id_agenda

evento

data

local

 

o X da questão é que estou querendo ordenar os eventos por data, sendo os eventos mais próximos listados nas primeiras posições.

 

Fiz assim:

CODE

$sql = "SELECT * FROM agenda";

$res = mysql_query($sql);

$row = mysql_fetch_array($res);

$data = explode("/", $row['data']);

$total = mysql_num_rows($res);

if ($total == 0) {

echo "NADA foi encontrado!";

} else {

$sql = "SELECT * FROM agenda ORDER BY $data[2], $data[1], $data[0] LIMIT $inicio, $max";

$res = mysql_query($sql);

while ($row = mysql_fetch_array($res)) {

 

echo $row['data'];

 

} // fecha WHILE

} // fecha o ELSE

 

Não ta funcionando, a ($sql) seria equivalente a:

$sql = "SELECT * FROM agenda ORDER BY ano, mes, data LIMIT $inicio, $max";

Usei exatamente assim em um outro sistema que fiz anterior a este, porém no meu banco existiam TRÊS campos para DATA, ai fica fácil, poderia por o ORDER direto. Nesse caso como to usando um único CAMPO para armazenar a DATA não to conseguindo fazer, será que tem como?

 

Pois quero fazer um código melhor, com um banco mais estruturado, sem ter que ficar criando vários campos sendo que sei que posso armazenar em um único campo e quebra-lo para fazer a filtragem.

 

Espero ter sido claro, e agradeço que puder me ajudar.

 

InSoNiA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você cometeu um pecado quebrando a data em três campos, pois assim o valor que deveria ser do tipo DATE, e consequentemente ter todas as propriedades e funcionalidades de uma data, não passa de um inteiro ou string.

Resolveria ordenar pelo id_agenda? imagino que seja um campo sequencial, e se a data for a data de inclusão, dá na mesma ordenar pelos campos de data e id.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá como faria então usando o Tipo do campo no MySQL como DATE?

 

Alterei o meu banco, agora o tipo esta como DATE como faria?

 

Obrigado!

o tipo date do mysql utiliza datas no formato 2008-02-19 logo você deverá passar no insert o valor do campo neste formato. Ou você pode ainda utilizar a função STR_TO_DATE(str,format) do mysql na seguinte sitaxe STR_TO_DATE('19/02/2008', '%d/%m/%Y')

isto funcionará.

 

 

FlW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá NFS, obrigado pela ajuda, porém já estou utilizando o tipo DATE e cadatrando os dados no formato citado. A questão é como consigo atingir o resultado ORDENADO da maneira que citei no inicio do tópico ou seja pela seguinte ordem:

 

ANO

MES

DIA

 

pois dessa forma vou conseguir imprimir na tela os eventos mais próximos na tela do usuário

 

Se alguém puder ajudar agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo obrigado, nossa que simples, nossa dava maior volta para fazer isso com campos e códigos rídiculo, nunca mais faço as coisas na pressa.

 

Obrigado é bem simples mesmo.

 

T+

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.