1

我想要实现的是从我的数据库中获取以这种格式输出的数据。我知道如何分别获得它们,但我不知道如何让它像这样显示。

<h3>Category1</h3>
<li>Item1</li>
<li>Item2</li>

<h3>Category2</h3>
<li>Item1</li>
<li>Item2</li>

到目前为止,我已经制作了 2 个数据库,一个带有类别,另一个带有包含列表项的类别的外键。我认为这是唯一的方法?

到目前为止,我只是使用 foreach 来显示数据,但需要运行包含相关列表项的第二个 foreach。任何人都可以帮助一个菜鸟吗?

4

2 回答 2

0

我不确定这是否是你要找的……但这是我通常做的:

$old_id_category = 0;
while($ln = $conn->fetch_array()){
  /* DATA FROM THE DATABASE */
  $id_category = $ln["id_category"];
  $categoryname = $ln["categoryname"];
  $itemname = $ln["itemname"];

  /* WHEN THE CATEGORY CHANGES */
  if($id_category != $old_id_category){
         /* PRINT HEADER */
         print("<h3>".$categoryname."</h3>");
         $old_id_category = $id_category;
  }
  /* PRINT LIST ITEMS */
  print("<li>".$itemname."</li>");
}

希望能帮助到你。

编辑:添加了 h3 和 li 标签。

于 2012-11-19T15:41:34.587 回答
0

这样有一张桌子:

+-------+-----------+
| Item  | Category  |
+-------+-----------+
| Item1 | Category1 |
| Item2 | Category1 |
| Item1 | Category2 |
| Item2 | Category2 |
+-------+-----------+

代码:

现在,当您获取数据时,请使用以下方式:

<?php
  $current_cat = "";
  foreach ($data = fetch_data_as_array($row))
  {
    if ($current_cat != $data["category"])
      echo '<h3>' . $categoryname . '</h3>';
    echo '<li>' . $data["item"] . '</li>';
    $current_cat = $data["category"];
  }
?>

每次获取数据时,它都会检查旧数据。如果两者不同,它会回显标题。

于 2012-11-19T15:46:24.817 回答