【发布时间】:2015-04-15 19:55:32
【问题描述】:
我有一些 PHP 用于验证表单,一旦验证完成,表单中的数据就会发送到数据库中。我的问题实际上不是代码问题,只是我不知道如何编写 if-else 语句块。
基本上,我有所有这些 if 语句来检查表单字段之一是否为空或不符合条件,然后是相应的 else 语句,它只保存他们输入的数据,所以当表单重新加载时,它们不必再次输入。目前,我最后有一个 else 语句,当所有字段都经过验证时,它会将所有数据发布到我的数据库中 - 问题是我有一个太多 else 语句,这给了我错误。
所以我认为我必须将整个代码块包装在一个 if-else 语句中,这基本上表示如果没有错误,则执行将数据发送到数据库的 else。
基本上我已经完成了else,我只需要帮助考虑为if设置什么条件
这是我的代码
//Define the database connection
$conn = mysqli_connect("danu.nuigalway.ie","myb1608re","fa3xul", "mydb1608") or die (mysql_error());
## Initialise varialbes to null ##
$nameError ="";
$emailError ="";
$categoryError ="";
$messageError ="";
$validName ="";
$validEmail ="";
$validMessage ="";
## On submitting form below function will execute ##
if(isset($_POST['submit']))
{
//assign details to be posted to variables
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$category = $_POST['category'];
//if name is less than 10 characters
if (empty($_POST["name"]) || strlen($name)<10)
{
$nameError ="* Name is too short";
}
else
{
$validName = $_POST["name"];
}
//if email is too short or is not the right format
if (empty($_POST["email"]) || !preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email) || strlen($email)<10 )
{
$emailError = "* You did not enter a valid email";
$validEmail = $_POST["email"];
}
else
{
$validEmail = $_POST["email"];
}
//if a category is not chosen
if (empty($_POST["category"])) {
$categoryError = "* Please select a category";
}
//if the message is left blank
if (empty($_POST["message"]) || strlen($message)<25 ) {
$messageError = "* Your message is too short";
}
else {
$validMessage = $_POST["message"];
}
//If there are no errors, email details to admin
else {
// variables to send email
$to = "e.reilly4@nuigalway.ie";
$subject = "Contact Form";
$body = "\r\n
Category: $_POST[category] \r\n
Message: $_POST[message] \r\n
Name: $_POST[name] \r\n
Email: $_POST[email]";
// Email Function
mail($to,$subject,$body);
//Insert the data into the database
$conn->query("INSERT INTO Assignment(Name, Email, Category, Message)VALUES('$name', '$email', '$category', '$message')", MYSQLI_STORE_RESULT);
$conn->close();
echo "sent to database";
}
}
?> <!-- End of PHP -->
基本上我需要找出另一个 if 语句放在第一个之后,但对于我的生活,我想不出一个条件。我想如果我做了一个错误的布尔值,一旦所有数据都正确,它就会被设置为真,但我不知道如何实现它。只是在寻找有关如何去做的任何想法
【问题讨论】:
-
希望这不是您真正的数据库信息....如果是这样,您可能需要重置您的连接凭据。
-
不,我在发布之前更改了它们
-
再次更新,抱歉忘记连接部分。查看
if语句是否满足您的需求。
标签: php validation if-statement logic