0

我想以无序列表格式显示存储在 $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 标签,但没有奏效。

任何帮助将非常感激。提前致谢 :)

4

3 回答 3

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>';
于 2013-02-02T06:34:36.927 回答
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;

    }
?>
于 2013-02-02T06:44:09.500 回答
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.";
}
...
于 2013-02-02T07:05:01.860 回答