Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com a data


marceloths

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
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

Prezado 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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

Carlos,

Consertei aquele erro básico, mas mesmo assim não exibe a mensagem

Veja 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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...