Я новичок в 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;