Ir para conteúdo

Arquivado

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

webdibula

data detalhes de demonstração apenas

Recommended Posts

Olá pessoal,estou com o seguinte problema, tenho uma select q me demonstra a data por mes e compromissos em determinados dias:ex.janeiro10/01/2007 - comp. tal01/01/2007 - comp. talfev23/02/2007 - comp. tal10/02/2007 - comp. talo problema é q os dias não estão em ordem crescente como arrumar isso, não estou conseguindo, o código esta abaixo.valeu$db = mysql_select_db("calendario");$sql = "SELECT id,data,titulo,conteudo FROM calendario WHERE YEAR(data) = YEAR(NOW())ORDER BY DATE_FORMAT(data,'%m') AND DATE_FORMAT(data,'%d') ";$resultado = mysql_query($sql)or die(mysql_error());echo "<table width=250 border=0 bordercolor='#E2E2E2' cellpadding='0' cellspacing='1'>"; #comeca tabelaecho "<tr>";$cat = "";while ($linha=mysql_fetch_array($resultado)) {$id = $linha["id"];$data = $linha["data"];$mesD = implode("/",array_reverse(explode("-", $data)));$mes = substr($mesD,3,2);$titulo = $linha["titulo"];$descricao = $linha["conteudo"];$nova_data = implode("/", array_reverse(explode("-", $data))); if($mes == 1){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'JANEIRO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 2){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'FEVEREIRO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 3){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'MARÇO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 4){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'ABRIL' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 5){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'MAIO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 6){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'JUNHO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 7){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'JULHO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 8){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'AGOSTO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 9){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'SETEMBRO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 10){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'OUTUBRO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 11){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'NOVEMBRO' ; #zera a AUX pra contar novamente 3 colunas } if($mes == 12){ #se for 3 é porque passou 3 colunas, dae faz quebra de linha $mes1 = 'DEZEMBRO' ; #zera a AUX pra contar novamente 3 colunas } //LINHA DE DEPURAÇÃO //echo "$mes"; if($cat<>$mes){ echo "<td><b><font color='#990000'>" .$mes1."<br><font color='#ffffff'>".x."</td>\n"; $cat = $mes; echo "</tr><tr>\n"; } echo "<tr><td><b>" .$nova_data. " - " .$titulo."</b><br><div align='justify'> ".$descricao."</td></tr>\n"; echo "<tr><td><font color='#ffffff'>".x."</td></tr>\n"; } echo "</table>\n";

Compartilhar este post


Link para o post
Compartilhar em outros sites

webdibula,Eu normalmente uso somente um order by da coluna data e funciona acho estranho não retornar correto para você, ja tentou colocar assim "ORDER BY data ASC"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom eu indico você se orientar pera IDtipo se eu me cadastro hj ID=1 as 12:25você se cadastra amanham ID=2 as 12:56quando você for retornar o valor pela ID ficaria12:2512:56SELECT * ...ORDER BY id ASC";caso seu script tenha ID né!!t+B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

e o seguinte a formatacao nao pode ser dentro do order by, ok!usei uma tabela minha de exemplo que continha data.Na primeira consulta retorna todo ordenado so por dia.SELECT DATE_FORMAT(DATA_NASCIMENTO,'%d') FROM pessoa_fisica ORDER BY (DATA_NASCIMENTO);Na segunda ordenado por mes e depois dia SELECT DATE_FORMAT(DATA_NASCIMENTO,'%d/%m') FROM pessoa_fisica ORDER BY (DATA_NASCIMENTO);Na terceira ordenado por Ano depois Mes e por ultimo diaSELECT DATE_FORMAT(DATA_NASCIMENTO,'%d/%m/%X') FROM pessoa_fisica ORDER BY (DATA_NASCIMENTO);OBS: este exemplo foi testado no Mysql por padrao o Mysql salva as dadas no seguinte formato:'2007-03-30' nos exemplos acima ja formatei para o padrao brasileiro de '30/03/2007'

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.