Nossos formulários podem conter campos tipo date, tais como a data de nascimento. É interessante que guardemos essa informação no banco de dados com o tipo correto. Isso nos permite fazer operações de data com essa data guardada, por exemplo, buscar os usuários que possuem certa idade.
Crie a tabela no banco:
CREATE TABLE `usuario`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` text NOT NULL,
`nascimento` date NOT NULL,
PRIMARY KEY (`id`)
)
Crie o formulário HTML:
Novo usuario:<br/>
<form action="gravar.php" method="post">
<input type="text" name="nome" /><br/>
<input type="text" name="nascimento" /> (dd/mm/aaaa)<br/>
<input type="submit" value="gravar" />
</form>
Perceba que a data a ser fornecida tem que seguir o padrão 'dd/mm/aaaa'
Crie o script gravar.php que guardará no banco (coloco o script de forma simplificada para não perder o foco do artigo, mas o ideal seria isolar o código que acessa o banco de dados em um objeto DAO)
<?php
//função que valida a data
function dataValida($dat) {
try {
$data = explode("/", $dat); // explode a string $dat em pedaços, usando / como referência
$d = $data[0];
$m = $data[1];
$y = $data[2];
// verifica se a data é válida!
// 1 = true (válida)
// 0 = false (inválida)
$res = checkdate($m, $d, $y);
if ($res == 1) {
return true;
} else {
return false;
}
} catch (Exception $exc) {
return false;
}
}
$furou = false;//controla a validação
if (trim($_REQUEST['nascimento']) == '' || !dataValida($_REQUEST['nascimento'])) {
$furou = true;
}
if (trim($_REQUEST['nome']) == '') {
$furou = true;
}
if($furou){
echo 'Todos os campos são obrigatórios! Verifique o formato da data dd/mm/aaaa';
//redirecione de volta para o formulário
}else{
//ok, pode gravar
$connection = mysql_connect('bancourl', 'usuario', 'senha');
$db = mysql_select_db($config->getDataBaseName(), $connection);
$sql = "insert into usuario(nome, nascimento) values ('".$_REQUEST['nome'])."', STR_TO_DATE('" . $_REQUEST['nascimento']) . "','%d/%m/%Y'))";
mysql_query($sql);
echo mysql_error();
mysql_close($connection);
}
?>
Observe que oriento o MySQL a usar o padrão 'dd/mm/aaaa' nesse trecho: '%d/%m/%Y'. Você pode alterar essa padrão por exemplo para dd-mm-aaaa usando: '%d-%m-%Y', mas lembre de alterar também a função em php onde fazemos a validação da data.
Para exibir a data cadastrada:
$connection = mysql_connect('bancourl', 'usuario', 'senha');
$db = mysql_select_db($config->getDataBaseName(), $connection);
$sql = "select nome, DATE_FORMAT(nascimento,'%d/%m/%Y') as nascimento from usuario";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
echo $row['nascimento'];// exibirá a data no formato dd/mm/aaaa
}
echo mysql_error();
mysql_close($connection);
Fica a dica.
Gustavo Marques.
Nenhum comentário:
Postar um comentário