【问题标题】:How do I create a nested list inside of a while loop?如何在 while 循环中创建嵌套列表?
【发布时间】:2013-05-21 05:50:59
【问题描述】:

我在尝试在 while 循环中获取嵌套

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。提前致谢!

【问题讨论】:

  • 你真的需要查找表(category_id 可以很容易地存储在饮料表中)吗?我个人会通过 2 个查询来解决这个问题,一个针对类别,一个针对饮料本身(我不知道这种情况下的最佳做法)
  • 一种饮料可以有多个类别吗?如果不能,则不需要联结表(将饮料链接到类别的表)。
  • 有些饮料确实属于多个类别。感谢您的建议!

标签: php database loops mysqli


【解决方案1】:

将您的 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>";
【解决方案2】:
$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>";

【讨论】:

    【解决方案3】:

    您可以将 category_id 添加到您的饮料表中,而不是 3 个表,以简化操作。然后你可以这样做:

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

    然后您可以循环结果并非常轻松地构建您想要的节点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 2012-07-24
      相关资源
      最近更新 更多