我在这里并不陌生,但是我也不问任何问题,因为每当遇到问题时,我都会在论坛或博客中找到与此处相关的问题的解决方案,但是我在此问题上没有任何成功。

在数据库中,我具有相关的表帖子和类别,在一个MySQL查询中,我在其类别中显示帖子的标题。到目前为止,一切正常。但是,在while循环结构中,不能重复带有is-sub类的标签。有什么办法可以停止此重复,然后再重复一次?

感谢您的帮助

echo '
<nav class="navbar">
    <ul>';
$sql = Query("SELECT * FROM posts INNER JOIN categories ON post_category = category_id ORDER BY post_category, post_title");

$is_category = NULL;

while ($row = mysqli_fetch_assoc($sql)) :

    if ($row['post_category'] != $is_category) {

        echo '<li class="has-sub"><a href="#" class="opendown">' . $row['category_title'] . '</a>';

        $is_category = $row['post_category'];

    }
        // stop loop
            echo '<ul class="is-sub">';
                // return loop
                echo '<li><a href="?doc=' . $row['post_id'] . '">' . $row['post_title'] . '</a></li>';
            // stop loop
            echo '</ul>';
        // return loop
        echo '</li>';

endwhile;
echo '
    </ul>
</nav>';

最佳答案

如果我了解您要执行的操作,那么我认为下面的代码将起作用。如果is_sub标记确实只显示一次,则可以使用:

<?php
echo '
<nav class="navbar">
    <ul>';
$sql = Query("SELECT * FROM posts INNER JOIN categories ON post_category = category_id ORDER BY post_category, post_title");

$is_category = NULL;
$issub = false;
while ($row = mysqli_fetch_assoc($sql)) :

    if ($row['post_category'] != $is_category) {

        echo '<li class="has-sub"><a href="#" class="opendown">' . $row['category_title'] . '</a>';

        $is_category = $row['post_category'];
        echo '<ul class="is-sub">';

    }
        if(!$issub) {
            echo '<ul class="is-sub">';
            $issub = true;
        }
        echo '<li><a href="?doc=' . $row['post_id'] . '">' . $row['post_title'] . '</a></li>';
        echo '</ul>';
        echo '</li>';

endwhile;
echo '
    </ul>
</nav>';
?>

09-25 18:05
查看更多