marceloths Postado Junho 16, 2009 Denunciar Share Postado Junho 16, 2009 Bom dia pessoal,Estou com um problema que parece simples ser solucionado, mas não estou conseguindo.Estou montando uma rotina que exibe uma mensagem se a data atual estiver entre a data inicial e a data final no banco de dados. Veja o código abaixo:$dataatual = date('Y-m-d'); $sql = "Select * From programacao Where datainicial >= '$dataatual' And datafinal <= '$datafinal'"; $sqlmensagem = mysql_query($sql); $mensagem = mysql_fetch_assoc($sqlmensagem); echo $mensagem['texto'];No banco de dados MySQL, os campos datainicial e datafinal estão como do tipo date na tabela programacao.Tentei de tudo e não obtive sucesso.Espero uma resposta.Grande abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 matias_rezende Postado Junho 16, 2009 Denunciar Share Postado Junho 16, 2009 A tua consulta tá errada. A segunda variável é $datafinal mesmo? Ou seria $dataatual?$sql = "SELECT * FROM programacao WHERE datainicial >= '$dataatual' AND datafinal <= '$dataatual'";Carlos Eduardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marceloths Postado Junho 16, 2009 Autor Denunciar Share Postado Junho 16, 2009 A tua consulta tá errada. A segunda variável é $datafinal mesmo? Ou seria $dataatual?$sql = "SELECT * FROM programacao WHERE datainicial >= '$dataatual' AND datafinal <= '$dataatual'";Carlos EduardoPrezado Carlos,O segundo campo da tabela é datafinal que recebe o valor da variável $dataatual. E assim como o campo datainicial que recebe o valor da variável $dataatual.Por exemplo, a minha ideia é fazer com o que a data atual esteja entre a data inicial e data final armazenada no banco de dados para exibir a mensagem de aviso sobre um evento que está sendo realizado.Só que não consigo resolver esse probleminha.Grato, Marcelo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 matias_rezende Postado Junho 16, 2009 Denunciar Share Postado Junho 16, 2009 Acho que você não entendeu o que eu escrevi. Dá uma olhada... Teu código$dataatual = date('Y-m-d'); $sql = "Select * From programacao Where datainicial >= '$dataatual' And datafinal <= '$datafinal'";// Veja que você usa $datafinal $sqlmensagem = mysql_query($sql); $mensagem = mysql_fetch_assoc($sqlmensagem); echo $mensagem['texto']; Meu código $sql = "SELECT * FROM programacao WHERE datainicial >= '$dataatual' AND datafinal <= '$dataatual'";// Viu a diferença??? Vamos imaginar a data de Hoje... Teu código ficaria assim.. $sql = "Select * From programacao Where datainicial >= '2009-06-16' And datafinal <= ' ' ";// Ou qualquer outra coisa, porque esta variável não foi setada ainda Meu código $sql = "SELECT * FROM programacao WHERE datainicial >= '2009-06-16' AND datafinal <= '2009-06-16' ";Carlos Eduardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marceloths Postado Junho 16, 2009 Autor Denunciar Share Postado Junho 16, 2009 Carlos,Consertei aquele erro básico, mas mesmo assim não exibe a mensagemVeja o código abaixo:$dataatual = date('Y-m-d'); $sql = "SELECT * FROM programacao WHERE datainicial >= '2009-06-16' AND datafinal <= '2009-06-16'"; $sqlmensagem = mysql_query($sql); $mensagem = mysql_fetch_assoc($sqlmensagem); echo $mensagem['texto']; Na tabela programacao há um registro que contêm os seguintes valores nos campos datainicial: 2009-06-10 e datafinal: 2009-06-20 Logicamente, o SQL deveria selecionar esse registro, mas não o localiza. Tentei utilizar a seguinte sintaxe: $sql = "SELECT * FROM programacao WHERE datainicial >= #2009-06-16# AND datafinal <= #2009-06-16#"; mas não obtive sucesso.Será que o SQL está selecionando as datas inicial e final como a string e não como a data?Tenho muita dificuldade em trabalhar com as datas no PHP.Espero um retorno.Abraço, Marcelo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 matias_rezende Postado Junho 16, 2009 Denunciar Share Postado Junho 16, 2009 Olha só... Não tinha percebido, mas a lógica está ao contrário...Veja, vou substituir os valores constantes pelo que está no banco...$sql = "SELECT * FROM programacao WHERE 2009-06-10 >= '2009-06-16' AND 2009-06-20 <= '2009-06-16'"; Percebeu?? O sinal está trocado... Teria que ser assim $sql = "SELECT * FROM programacao WHERE datainicial <= '$dataatual' AND datafinal >= '$dataatual'";Acho que agora vai.Carlos Eduardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marceloths Postado Junho 17, 2009 Autor Denunciar Share Postado Junho 17, 2009 Carlos, muito obrigado... realmente o sinal estava trocado. A lógica realmente estava ao contrário... putz, como eu não pude perceber isso!!Ainda bem que você teve a paciência comigo.Grande abraço,Marcelo.:D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 matias_rezende Postado Junho 17, 2009 Denunciar Share Postado Junho 17, 2009 Sem mistério... Li teu código umas 10 vezes e também não percebi.Acontece nas melhores familiasCarlos Eduardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
marceloths
Bom dia pessoal,
Estou com um problema que parece simples ser solucionado, mas não estou conseguindo.
Estou montando uma rotina que exibe uma mensagem se a data atual estiver entre a data inicial e a data final no banco de dados.
Veja o código abaixo:
No banco de dados MySQL, os campos datainicial e datafinal estão como do tipo date na tabela programacao.
Tentei de tudo e não obtive sucesso.
Espero uma resposta.
Grande abraço.
Link para o comentário
Compartilhar em outros sites
7 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.