PHP Form - Required Fields
In this section, we will introduce how to set up required fields and error messages in forms.
PHP - Required Fields
In the previous section, we have introduced the validation rules for the form. We can see that the "Name", "E-mail", and "Gender" fields are required and must not be empty.
Field | Validation Rule |
---|---|
Name | Required. + Can only contain letters and spaces |
Required. + Must contain a valid email address (including "@" and ".") | |
URL | Optional. If present, it must contain a valid URL |
Comment | Optional. Multi-line field (text area). |
Gender | Required. Must select one. |
If in the previous sections, all input fields were optional.
In the following code, we have added some new variables: $nameErr, $emailErr, $genderErr, and $websiteErr. These error variables will be displayed on the 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 it is not empty, the data will be passed to the test_input() function:
<?php
// Define variables and set to empty values
$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"]);
}
}
?>
PHP - Displaying Error Messages
In the following HTML example form, we have added some scripts for each field. These scripts will display error messages when incorrect information is entered (if the user submits the form without filling in the information, error messages will be output):
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
URL: <input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <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 class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>