Добрый день.
Имеются категории и подкатегории, вложенность может быть до 4 уровня подкатегории.
Необходимо отобразить на странице подкатегории хлебные крошки, чтобы по нажатию на любого предка переходить на его страницу.
Известен id текущей подкатегории $subcategory_id = 4, и по ней необходимо узнать только её предков, вплоть до родительской у которой parent_id = 0.
Как устроена БД:
Как я думаю:
- надо сформировать массив со всеми предшествующими подкатегориями и основной категории
- вывести этот массив в таком виде, т.е. от главного родителя до текущей подкатегории
Что сделано:
Попытался сделать функцию для формирования массива, но выдаёт ошибку
"Uncaught TypeError: Cannot access offset of type string on string" на строке " $sub_array['text'] = $row['title'];"
Как я думаю, мне нужно положить в массив "название" и "id" каждой подкатегории и основной категории.
Далее использовать рекурсию, чтобы обработать любое кол-во вложенности.
function get_node_data($subcategory_id)
{
global $connection;
$query = "SELECT * FROM category WHERE id = $subcategory_id";
$res = mysqli_query($connection, $query);
$result = mysqli_fetch_assoc($res);
$output = array();
foreach ($result as $row) {
$sub_array = array();
$sub_array['title'] = $row['title'];
$sub_array['id'] = $row['id'];
$sub_array['nodes'] = array_values(get_node_data($row['parent_id']));
$output[] = $sub_array;
}
return $output;
}
Вот часть кода, куда необходимо всё выводить
<ul class="breadcrumb">
<li class="breadcrumb-item"><a href="<?= PATH ?>">Главная</a></li>
<li class="breadcrumb-item">Категория</li>
</ul>
Собственно просьба помочь разобраться и подправить код, что делаю не так или не правильно мыслю?