2 回答
TA贡献1809条经验 获得超8个赞
为了显示每个类别的所有产品,您需要在使用第二个函数获取产品时传递类别名称:
<?php
function getCategory() {
$db_conn = getConnection();
if (!$db_conn) return false;
$sql = "SELECT DISTINCT category from products";
$result = $db_conn->query($sql);
return $result;
}
function getProduct($category) {
$db_conn = getConnection();
if (!$db_conn) return false;
$sql = "SELECT * from products WHERE category = '" . $category . "'";
$result = $db_conn->query($sql);
return $result;
}
?>
输出:
<?php $categories = getCategory(); ?>
<?php while ($category = $categories->fetch_assoc()) : ?>
<div class="category">
<h2><?php echo $category['name']; ?></h2>
<div class="products">
<?php $products = getProduct($category['name']); ?>
<table>
<?php while ($product = $products->fetch_assoc()): ?>
<tr>
<td><?php echo $product['name']; ?></td>
</tr>
<tr>
<td><img src="<?php echo $product['image']; ?>"/></td>
</tr>
<tr>
<td><?php echo $product['price']; ?></td>
</tr>
<?php endwhile; ?>
</table>
</div>
</div>
<?php endwhile; ?>
TA贡献1864条经验 获得超6个赞
SELECT * FROM products ORDER BY category
然后只需检查自您输出的最后一条记录以来类别是否已更改,如果有,则显示类别名称,如果没有,则回显该记录。
如果您这样做,也不需要第一个查询。
另一种方法是,保留第一个查询,但将第二个查询更改为:
'SELECT * FROM products WHERE category = ' . $category
其中类别来自您的第一个查询。
- 2 回答
- 0 关注
- 62 浏览
添加回答
举报