Geralmente quando inserimos uma data no banco de dados, ele precisa estar no formato internacional “AAAA-MM-DD”.
Aí a pessoa pensa, mas e agora? vou ter que usar esse modelo nos formulários também? Não.
Podemos desenvolver uma função que converte a data no formato nacional(DD/MM/AAAA) para o formato internacional.
Vamos ao exemplo, criamos um arquivo chamado datas.php:
function dataSQL($data)
{
$separaData = explode("/", $data);
$dataSQL = $separaData[0] . "-" .
$separaData[1] . "-" .
$separaData[2];
return $dataSQL;
}
Repare que a função recebe como parâmetro uma variável que contém a data.
Na linha 3, a variável $separaData recebe a função explode. Onde nela contém dois parâmetros, respectivamente o separador e a data em si.
Na linha 4, criamos uma nova variável chamada $dataSQL que recebe um array(vetor) de dados, onde cada índice é uma parte da data. Por exemplo o índice zero terá o valor do ano, o índice 1 terá o valor do mês e o índice 2 terá o valor do dia. Eles todos são concatenados com o separador “-“(hífen)
Na linha 8, retornamos a variável que contém a data convertida.
Teste simples para ver o funcionamento:
<?php
include 'datas.php';
echo dataSQL("13/11/2014");
Resultado seria: 2014-11-13
Ok, mas e agora como usar em uma aplicação, formulário?
Para usar é bem mais simples ainda.
Vamos supor que temos um formulário(usando a data no formato nacional 13/11/2014):
<form method="post" action="processaDados.php"> <input type="text" name="data"/> <input type="submit" value="Cadastrar"/> </form>
O script php:
<?php
//inclui o arquivo que contém a função de converter a data
include 'datas.php';
//recebe o dado do formulário
$dataFormulario = $_POST["data"];
//convertemos a data para o formato internacional antes de enviar ao BD
$dataConvertida = dataSQL($dataFormulario);
//inserimos no BD a data convertida
$insere = mysql_query("INSERT INTO tabela(data) VALUES($dataConvertida)");
Legal, agora que convertemos e inserimos no BD.. como posso trazer a data convertida do BD, para o formato nacional.. para poder exibir em tela?
Bom nesse caso podemos criar uma nova função dentro do arquivo datas.php igual a anterior.. mas com algumas pequenas mudanças:
function dataNacional($data)
{
$separaData = explode("-", $data);
$dataNacional = $separaData[2] . "/" .
$separaData[1] . "/" .
$separaData[0];
return $dataNacional;
}
As principais mudanças foram na linha 3 onde o separador agora é o hífen(-) e as linhas 4, 5 e 6 a ordem dos índices.. e o separador que agora é uma barra.
Em um exemplo simples:
<?php
include 'datas.php';
echo dataNacional("2014-11-13");
Resultado seria: 13/11/2014
Bem é isso pessoal. Espero que seja tão útil a vocês como foi para mim.
Até a próxima.
Deixe um comentário