janick 1 Denunciar post Postado Novembro 23, 2007 Olá, como funciona a lógica para definir que uma notícia esteja disponível em um site de tal data a tal data? Fiz um sistema de administração de conteúdo e queria aplicar esta funcionalidade, criei um campo data início e data termino (não sei se é o mais correto para o caso), e salvo isso no banco de dados. Parei ai. Se alguém puder me explicar, obrigado! http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 23, 2007 Há a possibilidade de usar a cláusula Between na sua SQL: SELECT noticias FROM tabela WHERE campo_data BETWEEN 'data1' AND 'data2'; Leembrando que o campo de datas deve ser DATE ou DATETIME Pelo PHP, você pode faezr a verificação usando timestamps retornados pela função strtotime(). http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Novembro 23, 2007 Beleza, mas a minha dúvida é porque eu tenho dois campos de data, 'data inicio' e 'data termino', e neste caso puxa somente de 'campo_data'. eu imagino que seja o correto, ok, mas como faria para gravar as duas datas dentro do mesmo campo? valeu! Compartilhar este post Link para o post Compartilhar em outros sites
m4rcio_souza 0 Denunciar post Postado Novembro 23, 2007 Você irá gravar a data da notícia no banco e quando fizer a consulta você define o intervalo entre as datas que você quer as notícias. Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Novembro 23, 2007 mas é o usuário do sistema que irá definir este intervalo, criei um campo lá para ele digitar a data inicio (Ex. 01/02/07), e uma data término (Ex. 02/02/07). Compartilhar este post Link para o post Compartilhar em outros sites
Danilo Ramos 0 Denunciar post Postado Novembro 23, 2007 Para compara um intervalo de datas com o dia de "hoje" use... soh compare a data de termino e deu... SELECT * FROM noticias WHERE data_termino <= NOW() tenta ae... abraços.. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 23, 2007 Por que salvar as duas datas no mesmo campo? Isso só vai complicar. Salve em capos diferentes e faça a comparação na própria consulta SQL, com Between. Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Novembro 23, 2007 ah beleza agora clareou! só que a opção de o usuário gravar a data é no formato - DD/MM/AA - dei um print aqui no NOW, e retorna um numero totalmente insano. como ele vai fazer pra comparação com a data no formato DD/MM/AA? ou é melhor dar outra opção de formato de data para o usuario definir? obrigado pela ajuda! PS - Mas eu não salve em um só campo não. Salvei em dois campos - 'inicio', 'termino' Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 23, 2007 O formato de data dos campos DATE é YYYY-MM-DD (ano-mes-dia) ou YYYY-MM-DD HH:MM:SS )ano-mes-dia hora-minuto-segundo). Você deve fazer a conversão das datas para o formato do banco, para poder usar as funções de data e hora do banco de dados. Use explode(). Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Novembro 23, 2007 consegui formatar a data para salvar no banco de dados e para retornar quando for editar, preciso fazer este explode para comparar a data aqui também? SELECT * FROM noticias WHERE data_termino <= NOW() Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 23, 2007 Você deve converter antes de inserir no banco, pois, se a data não estiver no formato aceito pelo campo DATE/DATETIME, será retornado um erro. Veja estes links: http://forum.imasters.com.br/index.php?sho...e+array_reverse http://forum.imasters.com.br/index.php?s=&...st&p=754659 http://forum.imasters.com.br/index.php?sho...e+array_reverse Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Novembro 23, 2007 beleza consegui converter, o problema é na hora de montar o select, não está funcionando: SELECT * FROM noticias WHERE data_termino <= NOW() Compartilhar este post Link para o post Compartilhar em outros sites
Danilo Ramos 0 Denunciar post Postado Novembro 23, 2007 os campos data_inicio e data_termino está como tipo DATE ? pega o valor da data de hoje pelo php PHP $data_hoje = date('Y-m-d'); e no select faz assim para não mostrar as datas_inicio que forem maior que a data de hoje também... SELECT * FROM noticias WHERE data_inicio <= '$data_hoje' AND data_termino <= '$data_hoje' Compartilhar este post Link para o post Compartilhar em outros sites
janick 1 Denunciar post Postado Novembro 23, 2007 Cara, consegui!! mas fazendo o select desta maneira $sql = mysql_query("SELECT * FROM noticia WHERE inicio <= NOW() AND termino >= NOW()"); Muito obrigado pela ajuda!!! Compartilhar este post Link para o post Compartilhar em outros sites