![](/img/trans.png)
[英]How to display all categories with some products each in Opencart 1.5?
[英]How to display all categories for all products in MySQL and PHP?
我是MySQL和PHP的初學者,需要您的幫助來了解解決方案。 我想顯示產品和相關類別的列表。 產品和類別之間存在多對多關系。 Google解決方案令我感到困惑。 如有任何建議,我將不勝感激。
我的代碼顯示重復的產品。 與類別重復了多次。 例如:
Product1 - Category1;
Product1 - Category2;
Product1 - Category3;
Product2 - Category1;
Product3 - Category3;
index.php文件:
$result = $pdo -> query('
SELECT product.id,
product.name AS product_name,
seller.name AS seller_name,
category.name AS category_name
FROM product
LEFT JOIN seller ON product.sellerid = seller.id
LEFT JOIN product_category ON product.id = product_category.productid
LEFT JOIN category ON product_category.categoryid = category.id
');
foreach($result as $row)
{
$products[] = array(
'id' => $row['id'],
'product_name' => $row['product_name'],
'seller_name' => $row['seller_name'],
'category_name' => $row['category_name']
);
}
index.html.php:
<ul>
<?php foreach($products as $product): ?>
<li>
<span><?php htmlout($product['id']); ?></span>
<span><?php htmlout($product['product_name']); ?></span>
<span><?php htmlout($product['seller_name']); ?></span>
<ul>
<li>
<span><?php htmlout($product['category_name']); ?></span>
</li>
</ul>
</li>
<?php endforeach; ?>
</ul>
如何顯示每個產品的所有類別? 循環應該是什么樣? 我想實現:
Product1 - Category1, Category2, Category3;
Product2 - Category1;
Product3 - Category3;
您可以使用GROUP_CONCAT()
獲取每一行中的所有賣方和類別。
SELECT product.id, product.name,
GROUP_CONCAT(DISTINCT seller.name) AS sellers,
GROUP_CONCAT(DISTINCT category.name) AS categories
FROM product
LEFT
JOIN seller
ON product.sellerid = seller.id
LEFT
JOIN product_category
ON product.id = product_category.productid
LEFT
JOIN category
ON product_category.categoryid = category.id
GROUP BY product.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.