In this chapter we will introduce how to set the required form fields and error messages.
In the previous chapter we have introduced the validation rules for the table. We can see that the "Name", "E-mail", and "Gender" fields are required and each field cannot be empty.
Field | Validation rules |
---|---|
name | Required. + can only contain letters and spaces |
Required. + Must contain a valid email address (contains "@" and ".") | |
URL | Optional. If present, it must contain a valid URL |
Remark | Optional. Multiline fields (text fields). |
gender | Required. Required to select one. |
As in previous chapters, all input fields are optional.
In the following code we have added some new variables: $nameErr, $emailErr, $genderErr, and $websiteErr. These error variables will be displayed on required fields. We also added an if else statement for each $_POST variable. These statements will check if the $_POST variable is empty (using PHP's empty() function). If it is empty, the corresponding error message will be displayed. If not empty, the data will be passed to the test_input() function:
<?php// Define variables and set them to empty values by default $nameErr = $emailErr = $genderErr = $websiteErr = "";$name = $email = $gender = $comment = $website = "";if ($_SERVER ["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "Name is required."; } else { $name = test_input($_POST["name"]); } if (empty($_POST["email"])) { $emailErr = "Email is required."; } else { $email = test_input ($_POST["email"]); } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); } if (empty($_POST["comment"])) { $comment = ""; } else { $comment = test_input($_POST["comment"]); } if (empty($_POST["gender"])) { $genderErr = "Gender is required."; } else { $gender = test_input($_POST["gender"]); }}?>
In the following HTML example form, we have added some scripts to each field. Each script will display an error message when the information is entered incorrectly. (If the user submits the form without filling in the information, an error message will be output):
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"> Name: <input type="text" name="name"> <span>* <? php echo $nameErr;?></span> <br><br> E-mail: <input type="text" name="email"> <span>* <?php echo $emailErr;?></span > <br><br> Website: <input type="text" name="website"> <span><?php echo $websiteErr;?></span> <br><br> Remarks: <textarea name=" comment" rows="5" cols="40"></textarea> <br><br> Gender: <input type="radio" name="gender" value="female">Female<input type="radio " name="gender" value="male">Male<span>* <?php echo $genderErr;?></span> <br><br> <input type="submit" name="submit" value="Submit"> </ form>