如何在while循环中创建嵌套列表?


How do I create a nested list inside of a while loop?

我在尝试获得嵌套<在while循环内。我不确定这是否可能,所以我愿意考虑其他选择。>

这是我的数据库看起来像什么,我想要实现的一个快速图像。

这是我的sql

SELECT * 
FROM drinks_category, drinks_lookup, drinks 
WHERE drinks.drink_id = drinks_lookup.drink_id 
AND drinks_lookup.drinks_category_id = drinks_category.drinks_category_id
ORDER BY drinks_category.drinks_category_title
这是我的输出php
$result = $conn->query($sql) or die(mysqli_error());
$last_category = 0;
while ($row = $result->fetch_assoc()) {
    if($row['drinks_category_id'] != $last_category) {
     echo "<h1>" . $row['drinks_category_title'] . "</h1>";
    }
    echo "<p>" . $row['drink_name'] . "</p>";
    $last_category = $row['drinks_category_id'];
}

我使用mysqli和php。提前感谢!

while循环更新为以下内容:

while ($row = $result->fetch_assoc()) {
if($row['drinks_category_id'] != $last_category) {
 if($last_category != 0) echo '</ul>';
 echo "<h1>" . $row['drinks_category_title'] . "</h1>";
 echo "<ul>";
}
echo "<li>" . $row['drink_name'] . "</li>";
$last_category = $row['drinks_category_id'];
}
if($last_category != 0) echo "</ul>";

不需要有3个表,您可以在您的饮料表中添加一个category_id,只是为了简化事情。然后你可以这样做:

SELECT drink_name, (SELECT drnk_category_title FROM drinks_category WHERE drink_category_id = drink_category // THE COLUMN I SUGGESTED //) AS title FROM drinks

然后你可以循环结果并创建你想要的节点非常容易

$result = $conn->query($sql) or die(mysqli_error());
$last_category = 0;
while ($row = $result->fetch_assoc()) {
    if($row['drinks_category_id'] != $last_category) {
        // close previous </ul>
        if( $last_category != 0 ) echo "</ul>";
        // new title
        echo "<h1>" . $row['drinks_category_title'] . "</h1>";
        // new <ul>
        echo "<ul>";
        $last_category = $row['drinks_category_id'];
    }
    echo "<li>" . $row['drink_name'] . "</li>";
}
// close last </ul>
if( $last_category != 0 ) echo "</ul>";