3

所以,我正在尝试制作一种用户市场类型的东西。有一个数据库item_names,基本上描述了虚拟物品,然后有另一个表market,当用户列出他们的一个项目时,它就会在用户用户市场上出售。

我唯一的问题是我想按item_name表中引用的项目名称对其进行分组。我知道我可以做一堆 if/else 语句,但这是无关紧要的,不仅因为有很多项目,而且因为随着时间的推移我会添加更多项目。我希望最终结果类似于

--[Water for sale]---------------------+

[50 water for sale] [20 water for sale]

[10 water for sale] [10 water for sale]

--[Chips for sale]----------------------+

[50 chips for sale] [20 chips for sale]

[10 chips for sale] [10 chips for sale]

依此类推,动态完成。

有什么帮助吗?

4

2 回答 2

6

获取数据:

$data = array();
while ($row = mysql_fetch_assoc($result)) {
  $itemName = $row["item_name"];
  if (!array_key_exists($itemName, $data)) {
    $data[$itemName] = array();
  }
  $data[$itemName][] = $row;
}

显示数据

foreach ($data as $itemName => $rows) {
  echo '<h1>', $itemName, '</h1>';
  echo '<ul>';
  foreach ($rows as $row) {
    echo '<li>', $row["article_name"], '</li>';
  }
  echo '</ul>';
}
于 2012-05-22T21:22:28.257 回答
0

确保您对 SQL 查询的结果进行排序(而不是group),那么循环将非常简单(假设 PDO 和item_nametable 上的列item_names):

$sth = $dbh->query ("SELECT * FROM item_names ORDER BY item_name");
$lastname = '';
while ($row = $sth->fetch()) {
    if($lastname != $row['item_name']) {
        echo '<h1>' . $row['item_name'] . '</h1>';
    }
    // echo contents for each item here

    // remember name from last row
    $lastname = $row['item_name'];
}
于 2012-05-22T21:26:54.737 回答