Ir ao conteúdo

Posts recomendados

Postado

E aí gurizada, beleza? É o seguinte, tentei de todas as maneiras criar um método num datepicker do materialize e não consegui. Inclusive, tarefa esta que o @DiF tentou ajudar mas alguma coisa fiz errado. Partindo para outro lado, deixando o campo mais "cru", formatei ele utilizando o maskedInput para, quando o usuário digitar a data, a mesma já aparece formatada como 00/00/0000. Mas a dúvida é: como pegar este valor do input e transformar em date no php?

 

Já tentei date_create, new DateTime, strtotime e nada de conseguir pegar a data do input, converter em date e jogar para  o banco de dados.

  • Moderador
Postado

@Felipe Paz

 

Você tem este campo certo?

<input class="date" type="text" name="data" />

O maskedInput funciona da seguinte forma:

 

$('.date').mask('00/00/0000');

O valor dentro da função é só a formatação dele.

 

O ideal é que você poste o seu código para sabermos o que pode estar de errado.

 

 

 

Postado

@DiF Não postei o código porque não tenho código. E sim, eu sei que o mask é apenas formatação do campo. Mas a dúvida é como pegar a string do input data e transformar em date no php. Esse é meu grande dilema agora. .. ^^

  • Moderador
Postado

@Felipe Paz É que você não explicou direito.

Eu ainda não entendi,  você recebe normalmente o  valor do campo  da data, mas não sabe formata-lo de volta para o padrão mysql? é isso?

 

O campo funciona normalmente?

Se sim, é só transformar o valor em um vetor e separar pelo separador em barras. 

  • Moderador
Postado

@Felipe Paz Então.

 

Presumindo que temos isto:

 

// formato 14/03/2017
$data = $_POST["data"];

Você pode usar o explode do php para separar pelo separador "barra" e inverter.

 

Por exemplo:

$data = $_POST["data"];

$partesData = explode("/", $data);

//14
$partesData[0];

//03
$partesData[1];

//2017
$partesData[2];

$dataFormatada = $partesData[2] . "-". $partesData[1] ."-". $partesData[0];

Claro que essa é só um exemplo não fica legal você fazer isso.

O ideal é você criar uma função com isso e aplicar na data.

 

Por exemplo tem duas formas de fazer isso

forma 1:

function inverteData($data){    
   $parteData = explode("/", $data);    
   $dataInvertida = $parteData[2] . "-" . $parteData[1] . "-" . $parteData[0]; 	
   return $dataInvertida;			
}

echo inverteData("25/09/2014");

forma 2:

function converteData($data){
    if(count(explode("/",$data)) > 1): 
         return implode("-",array_reverse(explode("/",$data)));
    elseif(count(explode("-",$data)) > 1): 
         return implode("/",array_reverse(explode("-",$data)));
    endif;
}

A forma dois é interessante porque ele faz a inversão sempre baseada no formato da data.

Então se a pessoa colocar  14/03/2017   a função retorna  2017-03-14  e se a pessoa colocar  2017-03-14  a função retorna  14/03/2017 

 

Na forma 1, é de uma via só.  você inverte  uma vez.  na forma 2 ela aceita qualquer um dos dois formatos e converte quando precisar...

 

Então por exemplo usando a forma 2, você digita no formulário  14/03/2017, a função inverte para 2017-03-14 e grava no banco de dados.   Na consulta você aplica a mesma função, então a data gravada no formato mysql, será  reinvertida novamente para o formato brasileiro.

 

$data = $_POST["data"];

$dataMySQL = converteData($data);

 

 

  • Curtir 2
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!