HTML — список ul в PHP не работает должным образом

Я хотел бы получить некоторую помощь в том, что происходит в моем коде. Я перепробовал много вариантов, но не могу заставить его работать.

Это ul-list в PHP-коде. Он встроен в CSS и все остальное в порядке, но каким-то образом ul-list совпадает с одним из операторов if-elseif-else-url (url, slug или id), и я не могу понять, почему.
Я пробовал много вариантов с положением </li> а также </li></ul> в конце операторов if-else, но ни одна из них не работает.

$parts = array();
foreach ($content AS $id => $val){
$position = "<li>";
$position.="<h2><a href='post.php?id='" . $val->id . "'>" . $val->title . "</a></h2>";
$position.="<h6>" . $val->published . "</h6>";
$position.="<p>" . substr($val->data, 0, 100) . "...";

if ($val->url){
$position .= "<a href='post.php?url={$val->url}'><span class='small red'>Läs mer</span></a>";
}
elseif ($val->slug){
$position .= "<a href='post.php?slug={$val->slug}'><span class='small red'>Läs mer</span></a>";
}
else {
$position .= "<a href='post.php?id={$val->id}'><span class='small red'>Läs mer</span></a>";
}
$position .= "</p></li>";
$parts[] = $position;
}
$htmltext = "<ul class='latest-news'>" . implode('', $parts) . "</ul>";

Может ли это быть что-то с CSS?

ul.latest-news {
padding: 0;
width: 100%;
list-style: none;
text-align: center;
float: none;
margin-top: 0px;
position: relative;
display: inline;
}

ul.latest-news li {
display: inline-block;
padding: 0 1em;
margin: 1.5em 0.6em;
max-width: 28%;
min-width: 250px;
height: 185px;
border: thin solid #C8C3C3;
border-radius: 21px;
}

![введите описание изображения здесь] [2]

свалка

0

Решение

Вы забыли закрыть свой <p> тег, а также открыть одинарную цитату в id= пары. Ну вот:

$parts = array();
foreach ($content AS $id => $val) {
$position = "<li>";

//don't mix string concatenation methods, it makes things harder to read
$position.="<h2><a href='post.php?id='" . $val->id . "'>" . $val->title . "</a></h2>";

$position.="<h6>" . $val->published . "</h6>";
$position.="<p>" . substr($val->data, 0, 70) . "...";

if ($val->url) {
$position.="<a href='post.php?url={$val->url}'><span class='small red'>Läs mer</span></a>";
} elseif ($val->slug) {
$position.="<a href='post.php?slug={$val->slug}'><span class='small red'>Läs mer</span></a>";
} else {
$position.="<a href='post.php?id={$val->id}'><span class='small red'>Läs mer</span></a>";
}
$position .= "</p></li>"; //<p> closed
$parts[] = $position;
}

$htmltext = "<ul class='latest-news'>" . implode('', $parts) . "</ul>";

Чтобы проверить, правильно ли генерируется html:

echo "<pre>";
var_dump($htmltext);
echo "</pre>";
die();
2

Другие решения

$htmltext .= "</li>";

изменить на:

$htmltext .= "</p></li>";

2

По вопросам рекламы [email protected]