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

Checkdate


Guest --felipe --

Pergunta

Guest --felipe --

Pessoal, estou com dúvidas no uso da função checkdate.

Tenho um formulário onde existe um campo para que o usuário entre com uma data. Essa data é atribuida a uma variável($dt_criacao). Ao enviar o formulário o sistema verifica todos os campos (todos os valores contidos no formulário são atribuidos a uma variável) e faz a consistência. É aqui que entra a dúvida.

A função checkdate pede que seja digitado valores neste formato xx/xx/xxxx.

Mais o valor do meu campo é uma variável.

Como posso dar consistência utilizando checkdate/explode?

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Não, a função usa o formato mês, dia, ano.. veja só o que ela mesmo diz:

bool checkdate ( int $month, int $day, int $year );

Ou seja, você vai ter que dar o explode (se vir dia/mes/ano fo form, dá o explode na barra-> / )no valor vindo do FORM e utilizar na ordem que o checkdate precisa... note também o INT na frente das variáveis, isso vai transformar o número para inteiros fazendo com que a função tenha sucesso na análise.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
Não, a função usa o formato mês, dia, ano.. veja só o que ela mesmo diz:

bool checkdate ( int $month, int $day, int $year );

Ou seja, você vai ter que dar o explode (se vir dia/mes/ano fo form, dá o explode na barra-> / )no valor vindo do FORM e utilizar na ordem que o checkdate precisa... note também o INT na frente das variáveis, isso vai transformar o número para inteiros fazendo com que a função tenha sucesso na análise.

Obrigado pela explicação mais eu continuo não entendendo.

Será que você poderia dar um exemplo prático da aplicação desta função, mais utilizando uma variável(que recebe a data digitada pelo usuário) em vez de utilizar a data direto.

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0

<?php
$data = "27/02/1984";
list($dia,$mes,$ano) = explode ("/",$data);
$msg = (checkdate($mes, $dia, $ano)) ? "Data válida" : "Data inválida";
echo $msg;
?>

Note que se a data vem num formato diferente de dd/mm/aaaa do form você vai ter que ajustar ali no explode...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
<?php
$data = "27/02/1984";
list($dia,$mes,$ano) = explode ("/",$data);
$msg = (checkdate($mes, $dia, $ano)) ? "Data válida" : "Data inválida";
echo $msg;
?>
Note que se a data vem num formato diferente de dd/mm/aaaa do form você vai ter que ajustar ali no explode...
Minha data vem neste formato 1984/02/27. Neste caso eu teria que colocar opção 1:
<?php
$dt_criacao = "1984/02/27";
list($ano,$mes,$dia) = explode ("/",$dt_criacao);
$msg = (checkdate($mes, $dia, $ano)) ? "Data válida" : "Data inválida";
echo $msg;
?>
ou opção 2:
<?php
$dt_criacao = "1984/02/27";
list($ano,$mes,$dia) = explode ("/",$dt_criacao);
$msg = (checkdate($ano, $mes, $dia)) ? "Data válida" : "Data inválida";
echo $msg;
?>

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
A ordem do checkdate é sempre mes, dia, ano... logo é a opção 1...

Ainda não foi desta vez.

Logo que a página carregou, apresentou esta msg.(antes de ter preechido qualquer campo do form)

Warning: checkdate() expects parameter 3 to be long, string given in /var/homologacao/www/html/desenvolvimento/gitcmd/csi/cadastra_geral.php on line 95

data inválida

$cri = 'dt_criacao';

list ($ano, $mes, $dia) = explode ('/', $cri);

$msg = (checkdate($mes, $dia, $ano)) ? 'data válida' : 'data inválida';

echo $msg;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
Pois é... mas no caso você está dizendo que $cri tem o valor dt_criacao e não o valor da variável $dt_criacao...

Vamos lá:

A variável $dt_criacao recebe o valor do campo 'dt_criacao'.

Para dar consistência ao campo(máximo de 10 caracteres), eu utilizei a função strlen.

$dt_criacao = $_GET['dt_criacao']; // a variável recebe o valor

$dt_criacao = strtoupper($dt_criacao); // por padrão, como todos os campos estão com esta função, eu deixei neste campo também

$cri = strlen($dt_criacao); //atribui à variável a quantidade de caracteres.

$cri = $dt_criacao; // ou dt_criacao

list($ano, $mes, $dia) = explode ('/', $cri);

$msg = (checkdate($mes, $dia, $ano)) ? 'data valida' : 'data invalida';

echo $msg;

Eu tentei dos doios jeitos mais o erro continuou o mesmo

$cri = $dt_criacao; // ou dt_criacao

Link para o comentário
Compartilhar em outros sites

  • 0

E desde quando número tem maiúsculos ou minúsculos (ou você não sabe pra que serve a função strtoupper)...

Dá um echo no $cri para ver qual o valor que ele tem, provavelmente não está sendo passado como o esperado...

Mais um detalhe, você está realmente usando o método GET no formulário?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
E desde quando número tem maiúsculos ou minúsculos (ou você não sabe pra que serve a função strtoupper)...

Dá um echo no $cri para ver qual o valor que ele tem, provavelmente não está sendo passado como o esperado...

Mais um detalhe, você está realmente usando o método GET no formulário?

Sim, estou usando o metodo GET no formulário.

Então eu posso tirar o strtoupper deste campo né?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --

Realmente o $ cri não esta recebendo a valor correto.

Se eu envio o form sem preencher o campo ele retorna '0' e se eu coloco alguma data ele retorna '10'.

Isso é por causa do strtoupper no $dt_criacao?????

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...