Boa noite a todos. Eu gostaria de pedir uma solução para o problema da mensagem de validação que aparece quando se retorna uma página mesmo que os dados inseridos estejam corretos. O que acontece quando o usuário aperta no botão para retornar uma página no que diz respeito ao PHP e essas mensagens de validação que aparecem indevidamente. Existe uma solução definitiva pra isso? por exemplo: "faz isso que quando você pedir para retornar,
a mensagem de validação não vai mais aparecer." Muito obrigado pelo esclarecimento. Segue abaixo o cód. bugado:
index.php
<?php
if (empty($_POST['action'])) {
$action = 'start_app';
} else {
$action = $_POST['action'];
}
switch ($action) {
case 'start_app':
// set default invoice date 1 month prior to current date
$interval = new DateInterval('P1M');
$default_date = new DateTime();
$default_date->sub($interval);
$invoice_date_s = $default_date->format('m/d/Y');
// set default due date 2 months after current date
$interval = new DateInterval('P2M');
$default_date = new DateTime();
$default_date->add($interval);
$due_date_s = $default_date->format('m/d/Y');
$message = 'Enter two dates and click on the Submit button.';
break;
case 'process_data':
$message = '';
$invoice_date_s = $_POST['invoice_date'];
$due_date_s = $_POST['due_date'];
$invoice_date_ex = explode('/', $invoice_date_s);
$invoice_date_im = implode('', $invoice_date_ex);
$due_date_ex = explode('/', $due_date_s);
$due_date_im = implode('', $due_date_ex);
// make sure the user enters both dates
if(empty($invoice_date_s))
{
$message = 'Please fill in the first field';
}
else if(empty($due_date_s))
{
$message = 'Please fill in the second field';
}
else if(strpos($invoice_date_s, '/', 1) != 2 || strpos($invoice_date_s, '/', 4) != 5 ||
strpos($due_date_s, '/', 1) != 2 || strpos($due_date_s, '/', 4) != 5 ||
strlen($invoice_date_im) != 8 || strlen($due_date_im) != 8)
{
$message = 'Please enter the dates with the format mm/dd/yyyy';
}
// the year limit is 2012
else if($invoice_date_ex[2] > 2020 || $invoice_date_ex[2] < 2011 || $due_date_ex[2] > 2020 || $due_date_ex[2] < 2011)
{
$message = 'Enter a year with the format yyyy between 2011 and 2020';
}
// convert date strings to DateTime objects
// and use a try/catch to make sure the dates are valid
else{
try{
$invoice_date = new DateTime($invoice_date_s);
$due_date = new DateTime($due_date_s);
}
catch(Exception $e)
{
?>
<p style = "font-weight: bold; font-size: 16px;"><?php echo 'Error: Enter valid dates inside the fields.'; ?></p>
<?php
exit(1);
}
// make sure the due date is after the invoice date
if($invoice_date > $due_date)
{
$message = 'The due date must be later the invoice date';
}
// format both dates
$invoice_date_f = $invoice_date->format('M d, Y');
$due_date_f = $due_date->format('M d, Y');
// get the current date and time and format it
$now = new DateTime();
$current_date_f = $now->format('M d, Y');
$current_time_f = $now->format('H:i:s a');
// get the amount of time between the current date and the due date
// and format the due date message
if($due_date > $now)
{
$dateInterval = $now->diff($due_date);
$due_date_message = 'this invoice is due in ' . $dateInterval->format('%y years, %m months and %d days') . '.';
}
else if($due_date <= $now)
{
$dateInterval = $due_date->diff($invoice_date);
$due_date_message = 'this invoice is ' . $dateInterval->format('%y years, %m months and %d days') . ' overdue.';
}
}
break;
}
include 'date_tester.php';
?>
Question
Edu Valente
Boa noite a todos. Eu gostaria de pedir uma solução para o problema da mensagem de validação que aparece quando se retorna uma página mesmo que os dados inseridos estejam corretos. O que acontece quando o usuário aperta no botão para retornar uma página no que diz respeito ao PHP e essas mensagens de validação que aparecem indevidamente. Existe uma solução definitiva pra isso? por exemplo: "faz isso que quando você pedir para retornar,
a mensagem de validação não vai mais aparecer." Muito obrigado pelo esclarecimento. Segue abaixo o cód. bugado:
index.php
date_tester.php main.css Edited by Edu ValenteLink to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.