表单提交时的PHP确认消息
php confirmation messages during form's submission
我创建了一个表单,我想通过单击提交按钮来验证它,如果一切正常,则将输入存储在DB中。验证和在DB中的存储都可以正常工作。为了方便用户,我还设置了两个弹出窗口,一个表示提交成功,另一个表示出现错误。
我的问题是,当我第一次加载我的表单所在的页面时,我收到与验证正确并且数据已正确提交时相同的弹出窗口。
你能帮帮我吗?我希望这些弹出框只出现在按下提交按钮后。
下面是我的php代码:验证代码
<?php
$firstNameError = $lastNameError = $streetError = $cityError = $postcodeError = $emailError = $mobileNumberError = $dateError = "";
$firstName = $lastName = $street = $city = $postcode = $email = $mobileNumber = $date = $comments = "";
if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (empty($_POST["firstName"]))
{$firstNameError = "Please fill this field";}
else
{
$firstName = test_input($_POST["firstName"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$firstName))
{
$firstNameError = "Please use only letters and white spaces";
}
}
if (empty($_POST["lastName"]))
{$lastNameError = "Please fill this field";}
else
{
$lastName = test_input($_POST["lastName"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$lastName))
{
$lastNameError = "Please use only letters and white spaces";
}
}
if (empty($_POST["street"]))
{$streetError = "Please fill this field";}
else
{
// check if street address syntax is valid
$street = test_input($_POST["street"]);
if(!preg_match('/[^A-Za-z0-9]/', $street)){
$streetError = "Please use only letters, numbers and whitespaces";
}
}
if (empty($_POST["city"]))
{$cityError = "Please fill this field";}
else
{
// check if city syntax is valid
$city = test_input($_POST["city"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$city))
{
$cityError = "Please use only letters and whitespaces";
}
}
if (empty($_POST["postcode"]))
{$postcodeError = "Please fill this field";}
else
{
//check if postcode syntax is valid
$postcode = test_input($_POST["postcode"]);
if(!preg_match('/[^A-Za-z0-9]*$/', $postcode)){
$postcodeError = "Please use only letters, numbers and whitespace";
}
}
if (empty($_POST["email"]))
{$emailError = "Please fill this field";}
else
{
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/(['w'-]+'@['w'-]+'.['w'-]+)/",$email))
{
$emailError = "Please rewrite your email address in the format a@b.code";
}
}
if (empty($_POST["mobileNumber"]))
{$mobileNumberError = "Please fill this field";}
else
{
$mobileNumber = test_input($_POST["mobileNumber"]);
// check if mobile number syntax is valid
if (!preg_match('/^'d+$/',$mobileNumber))
{
$mobileNumberError = "Please write only numbers";
}
}
if (empty($_POST["date"]))
{$dateError = "Please fill this field";}
else
{
$date = test_input($_POST["date"]);
//modified based on http://stackoverflow.com/questions/13194322/php-regex-to-check-date-is-in-yyyy-mm-dd-format
if(!preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$date))
{
$dateError = "Please follow this format:yyyy-mm-dd";
}
}
$comments = test_input($_POST["comments"]);
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
数据库
存储代码<?php
if (empty($firstNameError) && empty($lastNameError) && empty($streetError) && empty($cityError) && empty($postcodeError) && empty($emailError) && empty($mobileNumberError) && empty($dateError)){
mysql_connect("ServerName", "username", "password") or die("Connect failed!");
mysql_select_db("DbName") or die(mysql_error());
$appointment = "INSERT INTO inquiries
(submit_date, first_name, last_name, address, postcode, email, phone, wedding_date, wedding_location, special_req)
VALUES
('$currentDate', '$firstName', '$lastName', '$street', '$postcode', '$email', '$mobileNumber', '$date', '$city', '$comments') ";
$result = mysql_query($appointment) or die(mysql_error());
$message = "Your details have been submitted successfully. We will contact you soon!";
echo "<script>
alert('$message');
</script>";
}
else{
$message = "Oooops! Something went wrong. Please, resubmit the form based on the indications appeared under each field.";
echo "<script>
alert('$message');
</script>";
}
mysqli_close($connection);
?>
谢谢!
我想你的台词
if (empty($firstNameError) && empty($lastNameError) && empty($streetError) && empty($cityError) && empty($postcodeError) && empty($emailError) && empty($mobileNumberError) && empty($dateError)){
应该检查是否为空
if (!empty($firstNameError) && !empty($lastNameError) && !empty($streetError) && !empty($cityError).....
否则脚本将继续查询
相关文章:
- Rails:将表单字段值添加到数据确认消息中
- Javascript-如果用户没有响应,则关闭确认消息
- 如果确认消息,则触发单击事件
- 如何在提交时向Happy.js添加确认消息
- Laravel提交按钮上的确认消息
- 正在尝试在确认消息中显示变量值:Javascript
- 在chrome上显示类似于关闭窗口时的firefox的警报消息.确认消息”;离开"或“;留在这个页面上&quo
- Codeigniter:确认消息Javascript未显示
- Jquery:没有确认消息
- 删除记录确认消息
- 确认消息没有提示
- 插入之前的客户端是/否确认消息
- usercontrol中的javascript确认消息框
- 如何在ActionLink中调用删除前的确认消息,然后调用控制器进行删除
- 如何在选中所有输入复选框和单选组后显示javascript确认消息
- 当 Django 中的确认消息为假时,什么都不做
- confirm.html上的动态确认消息
- 向用户显示多条确认消息的最佳方式
- 如何添加Facebook FB.ui对话框确认消息
- 如果用户不接受JS确认消息,如何检查上一个选定的单选按钮