所以,我正在尝试做一种用户市场类型的东西。有一个带有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]
等等,动态完成。
有什么帮助吗?
获取数据:
$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>';
}
确保对 SQL 查询的结果进行排序(而不是分组),然后循环将非常简单(假设 PDO,并且在表 item_names
上item_name
一列):
$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'];
}