PHP Tutorials
PHP Forms
PHP Advanced
PHP OOP
This chapter shows you how to set up input fields and create error messages when needed.
In the table of validation rules on the previous page, we see that the "name", "Email", and "gender" fields are required. These fields cannot be blank and must be completed in HTML form.
Field | Validation Rules |
---|---|
Name | Required. + Must only contain letters and whitespace |
Required. + Must contain a valid email address (with @ and .) | |
Website | Optional. If present, it must contain a valid URL |
Comment | Optional. Multi-line input field (textarea) |
Gender | Required. Must select one |
In the previous chapter, all input fields were optional.
In the following code I have added new variants: $ nameErr, $ emailErr, $ genderErr, and $ websiteErr. These bug fixes will hold error messages for required fields. We also add a statement if else
one of the variants of the $ _ POST. This checks whether the $ _ variable POST is empty (with empty()
PHP function). When empty, the error message is stored in a variable error variable, and when empty, you send the user input data via 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"]);
}
}
?>
Then in the HTML form, we add a little text after each required field, producing the correct error message if needed (i.e. if the user tries to submit the form without filling in the required fields):
<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>
Website:
<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
<input type="radio" name="gender" value="other">Other
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
The next step is to verify the input data, namely "Does the Name field contain only white letters and white space?", And "Does the E-mail field contain a valid email address syntax?", And when completed, "Does the Website field contain -URL valid? ".