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

Problema com a data


marceloths

Pergunta

Estou com sério problema com a data a qual não consigo resolver.

Tenho um formulário com um campo data que quando é enviado o formulário para banco de dados é feito antes uma checagem de datas através de código abaixo:

$datarealizacao =$_POST['data'];

$dataseparada = explode("/", $datarealizacao);

if (checkdate($dataseparada[1], $dataseparada[0], $dataseparada[2])==true){

$datarealizacao = $dataseparada[2] . "-" . $dataseparada[1] . "-" . $dataseparada[0];

} else {

header('Location: admin-anivers-add.php?msg=datarealizacao-invalida');

break;

}

Quando eu digito no formulário por exemplo 15/02/2008 não ocorre nenhum erro.

Quando eu digito no formulário por exemplo 12/22/2008 não ocorre erro, mas avisa que a data está inválida. Tudo bem, a função checkdate funciona.

Quando eu digito no formulário por exemplo aaaaaaaaa ou qualquer outro texto ou número não equivalente a uma data ocorre um erro no PHP e não sei como corrigir esse problema. Estou tentando quebrar a cabeça, mas não consigo.

Se puder me ajudar ficarei muito grato.

Atenciosamente,

Marcelo.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Quando eu coloco aaaaaaaaa ou qualquer texto ao invés da data no formulário ocorre o seguinte erro

Warning: checkdate() expects parameter 2 to be long, string given in C:\xampp\htdocs\tindolele\admin-comando.php on line 82

C:\xampp\htdocs\tindolele\admin-comando.php on line 85

Abraço, Marcelo.

Link para o comentário
Compartilhar em outros sites

  • 0

Verifique se o que está na variável que vai ser checada é número... o is_numeric faz isso... mas acho que se o erro ocorrer a função deverá retornar false da mesma maneira, nesse caso acho que bastaria você colocar o @ na frente...

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite amigos.

O erro acontece porque quando você dá um explode no "aaaaaaaaaa" ele irá retornar um array com um único elemento. Mas depois você tenta passar para o checkdate os elementos 1, 2 e 3. Note que 2 e 3 nesse caso não existem.

Para resolver, basta verificar o tamanho do array antes:

$datarealizacao =$_POST['data'];

$dataseparada = explode("/", $datarealizacao);
if (count($dataseparada) == 3) {
    if (checkdate($dataseparada[1], $dataseparada[0], $dataseparada[2])==true) {
        $datarealizacao = $dataseparada[2] . "-" . $dataseparada[1] . "-" . $dataseparada[0];
    } else {
        header('Location: admin-anivers-add.php?msg=datarealizacao-invalida');
        break;
    }
} else {
    header('Location: admin-anivers-add.php?msg=datarealizacao-invalida');
    break;
}

Deve resolver.

Dica: sempre post os código dentro das tags "code" para ficar mais fácil a visualização

Abraço

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