我如何计算PHP中的表单验证错误?

时间:2013-12-13 16:19:38

标签: php forms

这是一个从mysql数据库预填充表单值的页面。人们可以编辑表单并更新数据库记录。

我正在检查字段是否为空并创建错误变量。提交表单并重新呈现页面时,错误变量(保留为空的错误变量)变为true,因此我在页面上回显错误消息。

这只是回复错误消息的部分,而不是获取数据库字段的其他部分,然后创建错误变量,然后将页面刷新后的变量渲染回页面等。

<?php
    if ($error != '') {
        echo '<div class="error top">';
        echo $error;
        echo "<ul>";
        if ($clientnameErr != '') { echo $clientnameErr; }
        if ($ponumberErr != '') { echo $ponumberErr; }
        if ($dropdate1Err != '') { echo $dropdate1Err; }
        if ($dropqty1Err != '') { echo $dropqty1Err; }
        if ($postage1Err != '') { echo $postage1Err; }
        echo '</ul></div>';
    }
?>

所以我想计算所有真实的错误并将该数字作为变量。我该怎么做?

因此,例如,如果clientname,ponumber和dropdate1保持为空,则那将是3个空,$ clientnameErr,$ ponumberErr和$ dropdate1Err的错误消息将回显,因为那些3 if语句将为真,所以我需要一个等于3的变量,所以我可以打印出来。

实际上我将继续展示它是如何制作所需的某些字段,然后创建错误变量,以防万一你需要它来解决上述问题。

if ($clientname == '' || $ponumber == '' || $dropdate1 == '' || $dropqty1 == '' || $postage1 == '') {
  $error = '<p>ERROR: Please fill in all required fields!</p>';
  if ($clientname == '') { $clientnameErr = '<li>Missing Client Name!</li>'; }
  if ($ponumber == '') { $ponumberErr = '<li>Missing PO Number!</li>'; } 
  if ($dropdate1 == '') { $dropdate1Err = '<li>Missing Drop Date 1!</li>'; }
  if ($dropqty1 == '') { $dropqty1Err = '<li>Missing Drop Quantity 1!</li>'; }
  if ($postage1 == '') { $postage1Err = '<li>Missing Postage 1!</li>'; }
}

1 个答案:

答案 0 :(得分:5)

使用数组来保存错误。然后,您只需使用count()即可获得错误总数:

$errors = array();
if ($clientname == '') {
    $errors['clientname'] = '<li>Missing Client Name!</li>'
}
if ($ponumber == '') {
    $errors['ponumber'] = '<li>Missing PO Number!</li>'
}

$numErrors = count($errors);
if ($numErrors > 0) {
  echo '<p>Total errors: ' . $numErrors . '</p>';
  $error = '<p>ERROR: Please fill in all required fields!</p>';
  echo "<ul>";
  echo implode("\n", $errors);
  echo "</ul>";
}