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: