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 關注
- 85 瀏覽
添加回答
舉報