Data em Formulários com PHP e MySQL

Depois de bastante tempo sem postar nada aqui, volto com uma dica para os nubs como eu em PHP e MySQL.

Tenho um projetinho de estudo para aprender PHP, MySQL, Javascript, HTML, CSS e POO (Programação Orientada a Objeto).

Nele, tenho uma página com um formulário de cadastro que faz um insert numa base de dados contendo nome, endereço, etc, e outra que busca os dados.

Estava tudo ok com um select * from tabela mas pensei em adicionar a data do cadastro de cada ítem a esse resultado. E foi aí que tive problemas.

O formato de data do MySQL é 2011-03-04 (ano-mês-dia) e eu queria o formato 04/03/2011.

Primeiro problema: inseri os dados na tabela e a data ficava como 0000-00-00. Descobri que o MySQL não gera a data, eu precisava informar então pensei em usar a função date() do PHP.

Até criei uma classe para formatar a data mas não adiantou, o insert me trazia a data invertida, 2011/03/04.

Foi aí que descobri uma maneira.

1) Informo a data com o PHP sem tratá-la. A função date() traz a data do sistema no formato 2011/03/04 e a cadastra nesse formato no MySQL. Não há conflito nenhum pois os formatos são iguais. Essa ação ocorre no script de inserção de dados.

2) Faço um select que formata a data usando date_format, uma função nativa do MySQL. Essa ação ocorre no script que busca os dados para mostrar na tela.

Veja os códigos.

1) Inserção dos dados:

$date = date(‘Y-m-d’);
$conbanco = new Conbanco();
$conbanco->conquer();
$grava = $conbanco-> quest (“INSERT INTO tabela VALUES (‘00000′,’$nome’…’$date’) ; “);

2) Seleção dos dados:

$conbanco = new Conbanco();
$conbanco->conquer();
$grava = $conbanco-> quest (“select *, date_format(data, ‘%d/%m/%Y’) as data from tabela order by data; “);

Veja que, no código 1, o valor da função date() é atribuído à variável $date que é inserida no banco com o insert.

No código 2, faço um select na tabela com uma instrução a mais, o date_format, e formato o valor do campo data.

É importante ressaltar que todas as palavras data contidas no select foram grafadas assim porque é o nome do campo na minha tabela.

O comando genérico seria “select *, date_format(xxx, ‘%d/%m/%Y’) as xxx from yyy;” em que xxx é nome do campo da sua tabela e yyy o nome da sua tabela.

Não sei se há maneiras melhores e se o que fiz traria algum problema em um sistema real. O que tenho é muito simples, para estudo, o que poderia ocultar algum erro mas, por enquanto, tudo funcionou perfeitamente.

É isso aí, fica a dica. Abraço.

Anúncios

2 Respostas para “Data em Formulários com PHP e MySQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s