[英]Form validation using PHP
I want to validate my form so ALL of the fields are required.我想验证我的表单,所以所有字段都是必需的。 If a field is NOT inserted or left blank it will display an error message AFTER submission.
如果未插入字段或将其留空,则会在提交后显示错误消息。 Could anyone help?
有人可以帮忙吗?
Form形式
<html>
<head>
<title>Form Input Data</title>
</head>
<table>
<body><table border="1">
<table bgcolor="lightblue"></body>
<form method="post" action="insert_ac.php">
<br>
<tr><td align="left"><strong>Nurse Information</strong></td></tr>
<tr>
<td><font color="red">Please select your name</font></td>
</tr>
<tr>
<td>Fullname</td>
<td><select name="valuelist">;
<option value="valuelist" name="nurse_name" value='<?php echo $nurse_name; ?>'></option>
<?php
$value=$_POST ["valuelist"];
$con = mysql_connect("localhost","root","") or die('Could not connect:'.mysql_error());
mysql_select_db("a&e", $con) or die('Could not select database.');
$fetch_nurse_name = mysql_query("SELECT DISTINCT Fullname FROM nurse");
while($throw_nurse_name = mysql_fetch_array($fetch_nurse_name)) {
echo '<option value=\"'.$throw_nurse_name[0].'">'.$throw_nurse_name[0].'</option>';
}
echo "</select>";
?>
</td>
</tr>
<tr>
<td>Please register name here:</td>
<tr>
<td>Fullname</td>
<td><input type="text" name="nurse_forename" size="30"> </td>
</tr>
</tr>
I would do something like this:我会做这样的事情:
$req = ['field1', 'field2', 'field...'];
$status = true;
foreach ($req as $field) {
if (empty($_POST[$field])) {
echo 'Field ' . $field . ' is empty';
$status = false;
}
}
if ($status) {
// ok
} else {
// not okay!
}
You create an array ( $req
), with all field names and loop over them.您创建一个数组 (
$req
),其中包含所有字段名称并循环它们。 Check every field against empty()
(check the php manual for this function).针对
empty()
检查每个字段(查看该函数的 php 手册)。
Here is a better (and mostly) correct HTML snippet... Please indent properly and read any HTML tutorial for well formed code.这是一个更好(并且大部分)正确的 HTML 片段...请正确缩进并阅读任何 HTML 教程以获取格式正确的代码。 Your HTML is **.
您的 HTML 是 **。
<?php
$value=$_POST["valuelist"];
$con = mysql_connect("localhost","root","") or die('Could not connect:'.mysql_error());
mysql_select_db("a&e", $con) or die('Could not select database.');
$fetch_nurse_name = mysql_query("SELECT DISTINCT Fullname FROM nurse");
?>
<html>
<head>
<title>Form Input Data</title>
</head>
<body>
<form method="post" action="insert_ac.php">
<table border="1" bgcolor="lightblue">
<tr>
<td align="left"><strong>Nurse Information</strong></td>
</tr>
<tr>
<td><font color="red">Please select your name</font></td>
</tr>
<tr>
<td>Fullname</td>
<td>
<select name="valuelist">
<option value="valuelist" value="<?php echo $nurse_name; ?>"></option>
<?php
while($throw_nurse_name = mysql_fetch_array($fetch_nurse_name)) {
echo '<option value="'.$throw_nurse_name[0].'">'.$throw_nurse_name[0].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td>Please register name here:</td>
</tr>
<tr>
<td>Fullname</td>
<td><input type="text" name="nurse_forename" size="30"> </td>
</tr>
</table>
</form>
</body>
</html>
If you have only the two given fields, this would do it:如果您只有两个给定字段,则可以这样做:
$status = false;
$name = '';
if (!empty($_POST['nurse_forename'])) {
$name = $_POST['nurse_forename'];
$status = true;
} elseif (!empty($_POST['valuelist'])) {
$name = $_POST['valuelist'];
$status = true;
} else {
$status = false;
// none of nurse_forname OR valuelist is filled
// abort.
}
Something like就像是
foreach($_POST as $form_entry)
if(empty($form_entry))
echo 'you have to fill in all fields';
if (isset($_POST['variable']{0})) {
echo 'I exist and I have at least one char!';
else
echo 'I dont exist or I have no chars!';
It checks whether $_POST['variable']
exists and has at least one char.它检查
$_POST['variable']
是否存在并且至少有一个字符。
if($_POST['valuelist'] == NULL or $_POST['nurse_forename'] == NULL){ die('empty'); }
未经测试。
Try it this way:试试这种方式:
if(empty($_POST['nurse_forename'])){
echo "Field Nurse-Forename is empty";
}
You also could check like this:你也可以这样检查:
if($_POST['nurse_forename']==""){
echo "Nurse-Forename is empty";
}
You cannot check for all fields with one command (because you cannot distinct between one and more empty fields).您无法使用一个命令检查所有字段(因为您无法区分一个和多个空字段)。 You could do it a little more elegant using OOP, but I think for the code you posted above the example should do.
您可以使用 OOP 做得更优雅一些,但我认为对于您在示例上方发布的代码应该这样做。
Also You can try this, It's validating all form items.您也可以试试这个,它正在验证所有表单项。
if (isset ( $_POST ['submit_button_name'] )) {
$validated = true;
array_walk_recursive ( $_POST, function ($value, $key) {
global $validated;
if (! trim ( $value ))
$validated = false;
} );
if ($validated) {
// insert function and redirect
} else {
// print Your message
}
}
// Your form
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
<?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"]);}
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field.</span></p>
<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
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;
?>
</body>
</html>
要使用 PHP 验证表单元素,您可以查看以下教程,该教程涵盖了几乎所有常用的表单元素: https ://phpcod.com/php-validate-form/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.