Validação simples de data.
O script abaixo faz uma validação simples para checar se a data é válida e em seguida converte a data inicial e a data final para timestamp para depois verificar se a data inicial é maior da a data final, é simples e ideal para quem está começando a programar em PHP e está precisando validar algum campo de data.
O script abaixo cria o arquivo teste.htm com um formulário básico que irá passar a data inicial e a data final informada pelo usuário:
No arquivo PHP é que checado a data para ver se ela é válida e não foi digitada errada pelo usuário, em seguida é convertida para timestamp para fazer validações de forma mais eficiente e transparente. No exemplo é feita uma checagem simples se uma data é maior ou menor que a outra, mas pode ser adaptado tranquilamente conforme a necessidade:
O script abaixo cria o arquivo teste.htm com um formulário básico que irá passar a data inicial e a data final informada pelo usuário:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="teste.php">
<p>Data inicial:
<input name="data1" type="text" id="data1" />
</p>
<p>Data final:
<label>
<input name="data2" type="text" id="data2" />
</label>
</p>
<p> </p>
<p>
<label>
<input name="enviar" type="submit" id="enviar" value="Enviar" />
</label>
</p>
</form>
</body>
</html>
No arquivo PHP é que checado a data para ver se ela é válida e não foi digitada errada pelo usuário, em seguida é convertida para timestamp para fazer validações de forma mais eficiente e transparente. No exemplo é feita uma checagem simples se uma data é maior ou menor que a outra, mas pode ser adaptado tranquilamente conforme a necessidade:
<?php
//Recebe as datas do formulário
$data_ini = $_GET['data1'];
$data_fim = $_GET['data2'];
//Obtém somente os "números" da datas, sem as barras
$datai_explode = explode ("/", $data_ini);
$dataf_explode = explode ("/", $data_fim);
//Faz a checagem das datas
$check_date_ini = checkdate($datai_explode['1'], $datai_explode['0'], $datai_explode['2']);
$check_date_fim = checkdate($dataf_explode['1'], $dataf_explode['0'], $dataf_explode['2']);
// Checa se a data inicial é válida
if ( $check_date_ini == 1 ){
echo "Data inicial válida. Continuando...";
echo "<BR>";
}else{
echo "Data inicial inválida";
exit;
}
//Checa se a data final é válida
if ( $check_date_fim == 1 ) {
echo "Data final válida. Continuando...";
echo "<BR>";
}else{
echo "Data final inválida";
exit;
}
//Converte a data inicial em timestamp
$ts_ini = mktime($hora, $minuto, $segundo, $datai_explode['1'], $datai_explode['0'], $datai_explode['2']);
echo "Timestamp inicial: ".$ts_ini;
echo "<BR>";
//Converte a data final em timestamp
$ts_fim = mktime($hora, $minuto, $segundo, $dataf_explode['1'], $dataf_explode['0'], $dataf_explode['2']);
echo "Timestamp final: ".$ts_fim;
echo "<BR>";
//Checa se a data final é menor que a data inicial
if ($ts_ini > $ts_fim){
echo "A data inicial não pode ser maior que a data final.";
echo "<BR>";
exit;
}else{
echo "Data validada com sucesso.";
echo "<BR>";
}
if ($v_d_max <> 0){
$v_d_max = 5;
}else{
$v_d_max = $v_d_max;
}
//Adiciona um valor em quantidade de dias para uma data
//digitada pelo usuário
$data_soma = mktime($hora, $minuto, $segundo, $datai_explode['1'], $datai_explode['0'] + $v_d_max, $datai_explode['2']);
echo "Data inicial após timestamp: ".date('d-m-y', $ts_ini)."<BR>";
echo "Data final após timestamp: ".date('d-m-y', $ts_fim)."<BR>";
echo "Data soma após timestamp: ".date('d-m-y', $data_soma)."<BR>";
//Faz a checagem para ver se a data digitada pelo usuário
//ultrapassou o limite
if ($ts_fim > $data_soma){
echo "A data Fim não pode ultrapassar ".$v_d_max." dias!";
echo "<BR>";
echo "Você tem certeza que a data fim ".date('d-m-y', $ts_fim)." foi digitada corretamente.";
echo "<BR>";
echo "Em caso positivo confirme a operação clicando no link abaixo:";
echo "<BR>";
echo "<a href=\"$PHP_SELF?v_d_max=0&data_ini=".$_GET['data1']."&data_fim=".$_GET['data2'].">Confirmar</a>";
exit;
}else{
echo "Data Fim validada com sucesso.";
echo "<BR>";
}
?>
Novo Comentário: