如何使用循环显示多个错误消息

时间:2019-03-27 19:11:14

标签: php

我的网站上有一个简单的注册表格。关于空字段,不正确的字符等,有各种验证规则。

我有一个名为$error的变量,该变量最初设置为0,但是如果发生验证错误,则将其设置为1,另一个变量$error_message将显示错误消息本身。下面是一个示例:

if (strlen($firstName) == 0) {
    $error = 1;
    $error_message = "<br/> First name is required";
}

if (!preg_match($expName, $firstName)) {
    $error = 1;
    $error_message = 'The First Name you entered does not appear to be valid.<br />';
}

if (strlen($lastName) == 0) {
    $error = 1;
    $error_message = "<br/>Last name is required";
}

if (!preg_match($expName, $lastName)) {
    $error = 1;
    $error_message = 'The Last Name you entered does not appear to be valid.<br />';
}

每当出现错误时,注册都会失败,并且会通知用户它是什么错误,没有姓氏,名字上的错误字符等。 我遇到的问题是,即使用户的表单中存在多个验证错误,也只会显示一条错误消息。

我的具体问题是:如果确实存在多个错误消息,如何显示多个错误消息?

我曾考虑过设置$error = ()array;并使用while循环可能遍历并显示每个错误消息,但是我不确定是否可以保留0和1来进行错误标记,如果这样做是有意义的。

这可能吗?

我已经浏览了有关此主题的一些答案,但它们似乎与显示数据库中的多行有关,我在此特定页面上没有这样做。

下面是应该显示错误消息的容器/列(PHP生成)。

                <div class='icon-center-check-circle'>
                <i class='fas fa-times-circle'></i>
                </div> 
                       <div class='col-md-succ'>                         
                         <br>Error with registration:</br>
                         <br>$error_message</br>                      
                        <br><a href = 'register.php' <button type = 'Submit' name = 'Submit'>Try Again</button></a></br>
                 </div>
             </div>
        </div>

Thanks for your time and any advice you can share!

2 个答案:

答案 0 :(得分:1)

将错误存储在$error_message数组中,然后只需使用empty来测试是否存在任何错误。无需设置单独的标志。

$error_message[] = 'Last name is required';

然后显示它们:

<?php 
if (!empty($error_message)) {
    echo '<br>Error with registration:</br>';
    foreach ($error_message as $error) {
        echo '<br>' . $error . '</br>';
    }
}
?>

答案 1 :(得分:0)

只是一个小例子:

<?php

$errors = [];
$someVar = '';

if (empty($someVar)) {
    $errors[] = 'need input';
}

if (!false) {
    $errors[] = 'another error';
}

$errorsOccured = count($errors) > 0;
foreach ($errors as $error) {
    echo $error . PHP_EOL;
}

如果使用数组,则可以在最后检查是否发生错误。 (如果没有错误,则数组将为空。) 运行代码可以在这里找到: