在PHP中以无序列表格式显示错误

时间:2013-02-02 06:27:15

标签: php listitem

我希望以无序列表格式显示存储在$ error中的所有错误。以下是显示错误的代码。

<?php
     if (!empty($error)) {
         echo '<p class="error"><strong>Your message was NOT sent<br/> The following error(s) occurred:</strong><br/>'. '<li>' . $error . '</li>' . '</p>';
     } elseif (!empty($success)) {
         echo $success;
       }
?>

问题是上面的代码只显示列表中的第一个错误,但其余的只显示在没有列表格式的单独行中。所有错误都以以下格式存储:

$error .= "You didn't type in your name. <br />";

我尝试删除br标签但是没有用。

非常感谢任何帮助。 在此先感谢:)

3 个答案:

答案 0 :(得分:0)

如果使用<li>标记,则必须对每个错误使用<br/>,PHP的输出应该是这样的,

<ul>
    <li>Error1</li>
    <li>Error2</li>
    <li>Error3</li>
</ul>

所以有这样的PHP代码,

$error .= "<li>You didn't type in your name. </li>";
$error .= "<li>Error2. </li>";
$error .= "<li>Error3 </li>";


echo '<p class="error"><strong>Your message was NOT sent<br/> The following error(s) occurred:</strong><br/>'. '<ul>' . $error . '</ul>' . '</p>';

答案 1 :(得分:0)

<?php
    if (!empty($error)) {
        $errors = explode('<br />', $error);
        echo '
<p class="error"><strong>Your message was NOT sent<br/>The following error(s) occurred:</strong></p>
<ul>
';
        foreach($errors as $error){
             echo "<li>$error</li>\n";
        }
        echo "</ul>";
    } elseif (!empty($success)) {
        echo $success;

    }
?>

答案 2 :(得分:0)

假设$error是一个数组(似乎是这样)。

if (!empty($error)) {
    foreach ($error as $e) {
        printf("<li>%s</li>\n", $e);
    }
}

// or just
print "<li>". join("</li>\n<li>", $error). "</li>";

// extra: collecting errors
if (trim($_POST["first_name"]) == "") {
    $error[] = "You didn't type in your first name.";
}
if (trim($_POST["last_name"]) == "") {
    $error[] = "You didn't type in your last name.";
}
...