【问题标题】:How to change php code to show errors under each input box如何更改php代码以在每个输入框下显示错误
【发布时间】:2020-07-18 08:40:41
【问题描述】:

我有以下代码:

    if(isset($_POST['submit'])){

        if (! isset($_POST['firstname'])) {
            $error[] = "Please fill out all fields";
        }

        if (! isset($_POST['surname'])) {
            $error[] = "Please fill out all fields";
        }
........

有验证:

if (strlen($_POST['firstname']) < 2){
        $error[] = 'First name cannot be empty';
    }
    if (strlen($_POST['surname']) < 2){
        $error[] = 'Please provide your surname';
    }

......

对数据库进行更多检查....

这会检查错误并一次性显示它们:

if(isset($error)){
                    foreach($error as $error){
                        echo '<p class="error-login">'.$error.'</p>';
                    }
                }

虽然这工作正常,但我希望在发生错误的每个输入框下显示错误。

我不想更改整个代码,只想对此进行必要的更改,这是我自己做不到的。

将它们放入数组中是唯一的方法还是有更简单的方法?

谢谢。

【问题讨论】:

  • errors添加一个键:$error['firstname'] = '...';并在每个输入下检查键下的错误。

标签: php arrays forms validation


【解决方案1】:

方法是-在某个键下将错误添加到$error,我想-输入字段的名称:

if(isset($_POST['submit'])){

    // I use key `all` for errors that don't belong to any field

    if (! isset($_POST['firstname'])) {
        $error['all'] = "Please fill out all fields";
    }

    if (! isset($_POST['surname'])) {
        $error['all'] = "Please fill out all fields";
    }

    if (strlen($_POST['surname']) < 2){
        $error['surname'] = 'Please provide your surname';
    }

在您的 html 标记中:

// general errors, not related to inputs
if(isset($error['all'])){
    foreach($error['all'] as $err){
        echo '<p class="error-login">'.$err.'</p>';
    }
}

<input type="text" name="surname" />
<?php
if(isset($error['surname'])){
    foreach($error['surname'] as $err){
        echo '<p class="error-login">'.$err.'</p>';
    }
}

【讨论】:

  • 看起来是解决该问题的最佳方法。
  • 谢谢,感谢您的回复,但是,对于我的代码,我已按照指出的方式进行了所有修改,但它不起作用。提交时的表单没有显示任何错误,即使我填写了所有字段也没有提交。我认为这可能是数据库处理,因为它返回此“$error[] = $e->getMessage();”但我已经删除了电子邮件和密码,但还是一样。认为返回时可能是输入值 "" 但我已将这些更改为 "if(isset ($error['firstname'])" 仍然没有。有什么想法吗?
猜你喜欢
  • 2011-09-29
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 2014-09-08
  • 2022-08-21
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多