在php中,如果出现错误语句,更容易将数据保存在文本字段中


An easier of keeping data in the text fields in php if an error statement occurs

我有一个简单的xhtml表单,文本框询问用户的姓名,id,地址等。我必须使用php来验证数据。例如,在ID字段中只允许6个数值,如果不是这种情况,它会向用户显示一个错误,要求他们修复它。我想做的是,当用户点击提交与不正确的数据,我想保持在字段中的数据时,错误显示出来。我目前正在这样做:-

 <td><label for="customerid">*Customer ID: </label></td>
    <td><input type="text" value="
<?php if(($_POST['customerid'] != $id) || ($_POST["customerfname"] != $fname) 
||    ($_POST["customerlname"] != $lname)){echo $_POST['customerid'];} ?>"
id="customerid" name="customerid"/>

我刚刚修改了所有文本框的语句,但你可以想象,如果我必须为10个文本框这样做,它会变得有点复杂。我想知道这是不是一种更简单的方法。

大胆

更新
<td> <select name="state" id="state"  value="<?php echo (isset($_POST["state"]) ?  : ''); ?>"> 
    <option value="--">--</option>
    <option value="ACT">ACT</option>
    <option value="NSW">NSW</option>
    <option value="NT">NT</option>
    <option value="QLD">QLD</option>
    <option value="SA">SA</option>
 </select>
</td>

像这样?

<input type="text" name="customerid" value="<?php echo (isset($_POST['customerid']) ? $_POST['customerid'] : ''); ?>">

更新-在重新生成表单之前运行检查

<?php
if(($_POST['customerid'] != $id) || ($_POST["customerfname"] != $fname) || ($_POST["customerlname"] != $lname))
{
    // do nothing
}
else
{
    $_POST['customerid'] = '';
}
?>
<input type="text" name="customerid" value="<?php echo (isset($_POST['customerid']) ? $_POST['customerid'] : ''); ?>">

这里有几件事你可以单独做,也可以组合做:

  1. 通过AJAX提交表单
  2. 在将其传递给服务器之前在Javascript中进行验证(这将捕获用户可能遇到的大多数错误)
  3. 将提交的值保留在$_SESSION数组中,如果设置了,则将其回显到字段中。ex <input type='text' value='<?php echo $_SESSION['myVal'] || '';?>'></input>

这些语句是什么?

$_POST['customerid'] != $id

你可以使用$fields数组来存储标签,$errors数组来放置错误,然后使用

<?php $fields = array ('customerId' => '*CustomerID'); ?>
<?php  // validation   ?>
<?php foreach($fields as $name => $label): ?>
<td><label for="<?php echo $name ?>"><?php echo $label?>: </label></td>
<td>
<input type="text" value="" id="<?php echo $name ?>" name="<?php echo $name ?>">
<?php if(isset($errors[$name])): ?>
  <?php echo $errors[$name] ?>
<?php endif; ?>
</td>

<?php endforeach; ?>

你也可以在表单中添加html验证,通过添加"required"属性到输入(<input required ... >)或"pattern"属性

来阻止用户提交空表单