最简单的方法可能是提取类别列表,迭代并提取其附加产品。(即几个问题。)
例如(伪代码):
$result = fetch_assoc("SELECT category_id FROM categories");
foreach($result as $row)
{
echo $row['category_id'];
$result2 = fetch_assoc("SELECT product_id FROM products");
foreach($result2 as $row2)
{
echo $row2['product_id'];
}
}
如果您想在一个查询中完成这一切,可以执行如下操作:
$result = fetch_assoc("SELECT product_id, category_id FROM products p JOIN categories c ON p.category_id = c.category_id ORDER BY c.category_id ASC");
$last = null;
foreach($result as $row)
{
# Output the category whenever it changes
if($row['category_id'] != last)
{
echo $row['category_id'];
$last = $row['category_id'];
}
echo $row['item_id'];
}
然后,您可以对结果集进行迭代,并在类别名称发生更改时将其拉出。
在从数据库中获取SQL之前,可能有一种更复杂、更优雅的方法来编写它来完成所有工作,但我并不那么聪明。;)
注意:示例使用伪代码。我使用的mysql抽象类的工作方式如下:
$db->query("SELECT stuff");
$db->multi_result(); // returns 2d-associative array
那时我可以
foreach($db->multi_result() as $row)
太懒了,太棒了。
如果您愿意,我可以发布抽象层的代码。