我希望以无序列表格式显示存储在$ 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标签但是没有用。
非常感谢任何帮助。 在此先感谢:)
答案 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.";
}
...