2013-02-16 135 views
1

我想验证我的表单,因此所有字段都是必需的。如果一个字段没有插入或留空,它会在提交后显示错误消息。谁能帮忙?使用PHP进行表单验证

形式

<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> 
+0

请,显示HTML .. – 2013-02-16 21:43:38

回答

2

我会做这样的事情:

$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! 
} 

您创建一个数组($req),超过他们所有的字段名和循环。检查每个字段对empty()(检查PHP手册的这个功能)。

这是一个更好的(也是最主要的)正确的HTML代码片段...请正确缩进并阅读任何HTML格式的代码。你的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> 

如果你只有两个给定的领域,这将做到这一点:

$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. 
} 
+0

如果用户没有从数据库中选择一个Forename(选择框保留为空)并且他们需要输入一个名称,这是否会工作? – user2075528 2013-02-16 21:55:31

+0

不,这将检查所有元素(在$ req中)是否为空。如果您想检查是否提交了“valuelist”或“nurse_forename”,则需要对其进行更改。但是您的HTML表单不是为此设计的,您还需要更改它。 – nepda 2013-02-16 22:12:57

+0

这是如何实现的? – user2075528 2013-02-16 22:35:27

0

if($_POST['valuelist'] == NULL or $_POST['nurse_forename'] == NULL){ die('empty'); }

未经检验。

0

喜欢的东西

foreach($_POST as $form_entry) 
if(empty($form_entry)) 
    echo 'you have to fill in all fields'; 
0

试试这样说:

if(empty($_POST['nurse_forename'])){ 
echo "Field Nurse-Forename is empty"; 
} 

你也可以查看这样的:

if($_POST['nurse_forename']==""){ 
echo "Nurse-Forename is empty"; 
} 

你不能检查与一个命令所有字段(因为你不能区分一个或多个空字段)。你可以使用面向对象更优雅一些,但我认为你在上面发布的代码应该这样做。

+0

这会工作,如果用户没有从数据库中选择一个用名字(选择留空白框),他们需要输入一个名称来代替? – user2075528 2013-02-16 21:51:43

+0

是的,如果你单独检查每个字段,它将起作用。你将不得不与操作员一起玩,并检查两个字段是如何发送的。或者你给这两个领域相同的名称。 – BNetz 2013-02-17 00:17:43

0
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!'; 

它检查$_POST['variable']是否存在并且至少有一个字符。

0

,你也可以试试这个,这是验证所有的表单项目。

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 
0
<!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>