Подскажите пожалуйста, есть 2 таблицы:
1 - таблица категорий, и связей (cat2 и cat3 подчиняется cat1)
prod_category
id|name|parent_category|
1 |cat1| 0 |
2 |cat2| 1 |
3 |cat3| 1 |
4 |cat4| 3 |
5 |cat5| 3 |
6 |cat6| 0 |
7 |cat7| 6 |
8 |cat8| 0 |
9 |cat9| 8 |
10|cat10| 9 |
2 - таблица продуктов и их категории
products
id| name|category_id|
1 |prod1| 0 |
2 |prod2| 1 |
3 |prod3| 2 |
4 |prod4| 3 |
5 |prod5| 4 |
6 |prod6| 5 |
7 |prod7| 6 |
8 |prod8| 7 |
9 |prdo9| 8 |
10|prod10| 9 |
Я делаю sql цикл родительских категорий:
$stmt = $pdo->query("SELECT * FROM prod_category WHERE parent_category='0'");
while ($row = $stmt->fetch()) {
}
Далее мне нужно просчитать есть закреплена ли эта категория в продуктах (есть ли в ней продукты).
Если нет, тогда взять категорию которая подчиняется (дочерняя) и посчитать есть ли в ней продукты, и до кона связей. Если продукты в какой либо категории (дочерней либо же в самой родительской) есть, тогда выводим $row['name']
, если нет, тогда не выводим.
Вы можете использовать следующий код:
<?php
// get categoriies into array >>>
$sth = $pdo->prepare("select * from prod_category");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
$categories = [];
foreach ($result as $c) {
$categories[$c['id']] = $c;
};
// <<< get categoriies into array
// recursive function get product main category
function get_main_category($cat) {
global $categories;
return $categories[$cat]['parent_category'] == 0
? $categories[$cat]['name']
: get_main_category($categories[$cat]['parent_category']);
}
$sth = $pdo->prepare("select * from products");
$sth->execute();
$result = [];
while ($prod = $sth->fetch(PDO::FETCH_ASSOC)) {
$prod['main_category'] = get_main_category($prod['category_id']);
if (isset($res[$prod['main_category']])) $res[$prod['main_category']]++;
else $res[$prod['main_category']] = 1;
}
print_r($res);
Здесь можно протестировать PHPize.online
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть страница с подробным описанием товара, у каждой свое idПользователь переходит на нее с другой страницы, допустим страница rent на ней выводятся...
Есть столбец таблицы с кодировкой utf8 (менять кодировку нельзя)