cassianooliver Postado Fevereiro 6, 2008 Denunciar Share Postado Fevereiro 6, 2008 Estou selecionando 6 eventos do BD...quando esse evento já foi realizado, ou seja, já aconteceu, ele não deve mais aparecer..então pensei no seguinte, tenho que selecionar os eventos onde a data dele seja maior que a data atual...fiz assim:$data_atual = date("Y/m/d"); $sql = "SELECT * FROM eventos WHERE data > $data_atual ORDER BY data ASC LIMIT 0, 6";o campo data ta no formato DATE do mysql...mas do jeito que ta aí, sempre exibe todos os eventos..coloquei 3 eventos para testeevento1 - 2008/01/30evento2 - 2008/01/31evento3 - 2008/03/08Quero que somente o evento3 seja exibido, pois os outros já foram realizados.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 6, 2008 Denunciar Share Postado Fevereiro 6, 2008 Se o campo é do tipo DATE então ele segue o padrão aaaa-mm-dd e não aaaa/mm/dd. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Norivan Oliveira Postado Fevereiro 6, 2008 Denunciar Share Postado Fevereiro 6, 2008 tenta assim $data_atual = date("Y-m-d"); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Fevereiro 7, 2008 Autor Denunciar Share Postado Fevereiro 7, 2008 Se o campo é do tipo DATE então ele segue o padrão aaaa-mm-dd e não aaaa/mm/dd.putz, falta de atenção minha....concertei aqui, mas ainda mostra todos os eventos...$data_atual = date("Y-m-d"); $sql = "SELECT * FROM eventos WHERE data > $data_atual ORDER BY data ASC LIMIT 0, 6"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 7, 2008 Denunciar Share Postado Fevereiro 7, 2008 A coluna da tabela realmente se chama data? Agora ao meu ver não tem nenhum erro.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Fevereiro 7, 2008 Autor Denunciar Share Postado Fevereiro 7, 2008 sim...consegui resolver, mas não foi no select dos dados, mas sim dentro do while que funcionou a comparação das datas...while (...) { $data_bd = $dados["data"]; $data_atual = $date("Y-m-d"); if($data_bd > $data_atual) { mostra os eventos.... } }pelo que pesquisei, pra poder comparar no select, teria que usar mktime() mas aí daria mó trabalhão... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 7, 2008 Denunciar Share Postado Fevereiro 7, 2008 Não... pois o campo date na verdade é um campo que guarda o timestamp formatado, a comparação de datas é perfeitamente possível na query (ainda mais porque o campo é apropriado para tal). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Fevereiro 7, 2008 Autor Denunciar Share Postado Fevereiro 7, 2008 hum...estranho então, na query não funcionava de jeito nenhum, aí quando testava fora dela, no while ou num arquivo qualquer funcionava...chegou a testar aí? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 7, 2008 Denunciar Share Postado Fevereiro 7, 2008 Com o seu código não... mas acabei de criar um pra comprovar...TabelaCREATE TABLE tst ( id int(3) NOT NULL auto_increment, nome varchar(60) NOT NULL, data DATE NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM charset=UTF8; Scritp <?php include 'conexao.php'; $data = date('Y-m-d'); $query = "SELECT * FROM tst WHERE data >= '$data'"; $sql = mysql_query($query)OR DIE(mysql_error()); echo 'Query 1 '.$query.'<BR>'; while($x = mysql_fetch_assoc($sql)){ echo $x['nome'].' - '.$x['data'].'<BR>'; } echo '<BR><BR><BR><BR>'; $query = "SELECT * FROM tst WHERE data > '$data'"; $sql = mysql_query($query)OR DIE(mysql_error()); echo 'Query 2 '.$query.'<BR>'; while($x = mysql_fetch_assoc($sql)){ echo $x['nome'].' - '.$x['data'].'<BR>'; } echo '<BR><BR><BR><BR>'; $query = "SELECT * FROM tst WHERE data < '$data'"; $sql = mysql_query($query)OR DIE(mysql_error()); echo 'Query 3 '.$query.'<BR>'; while($x = mysql_fetch_assoc($sql)){ echo $x['nome'].' - '.$x['data'].'<BR>'; } echo '<BR><BR><BR><BR>'; $query = "SELECT * FROM tst WHERE data <= '$data'"; $sql = mysql_query($query)OR DIE(mysql_error()); echo 'Query 4 '.$query.'<BR>'; while($x = mysql_fetch_assoc($sql)){ echo $x['nome'].' - '.$x['data'].'<BR>'; } ?>Em anexo a saída do script (cadastrei 4 eventos, 1 anterior a hoje, outro exatamente hoje, e dois após hoje), note que ali poderia ser substituído $data simplesmente por NOW() (função do MySQL que pega a data/hora do momento de execução da query). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Fevereiro 7, 2008 Autor Denunciar Share Postado Fevereiro 7, 2008 interessante,não sei se to errado mas na sua query ta assim:$query = "SELECT * FROM tst WHERE data >= '$data'";usou '' na $data, no meu caso não usei, será que foi por isso não funcionou no meu script?chegando em casa vou fazer o teste... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 7, 2008 Denunciar Share Postado Fevereiro 7, 2008 Pois é... sempre os manuais de referência trazem esses dados entre apóstrofes, mas o fato é que a maioria das vezes que eu testei sem também funcionou... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
cassianooliver
Estou selecionando 6 eventos do BD...
quando esse evento já foi realizado, ou seja, já aconteceu, ele não deve mais aparecer..
então pensei no seguinte, tenho que selecionar os eventos onde a data dele seja maior que a data atual...
fiz assim:
o campo data ta no formato DATE do mysql...
mas do jeito que ta aí, sempre exibe todos os eventos..
coloquei 3 eventos para teste
evento1 - 2008/01/30
evento2 - 2008/01/31
evento3 - 2008/03/08
Quero que somente o evento3 seja exibido, pois os outros já foram realizados....
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.