Неограниченные субботные категории PHP и MySQL Li List Categories

StackOverflow https://stackoverflow.com/questions/8325750

  •  26-10-2019
  •  | 
  •  

Вопрос

У меня есть следующие таблицы category а также category_description в PHP MySQL. У меня вопрос, как с информацией ниже я буду создавать неограниченное количество подкатегорий в ul li структура. Я посмотрел на различные примеры здесь, но нет безрезультатно, большое спасибо за ваше время в чтении этого вопроса. я с нетерпением жду вашего ответа

Column         Type         Null    Default
category_id    int(11)      No       
image          varchar(255) Yes     NULL     
parent_id      int(11)      No      0    
top            tinyint(1)   No       
column         int(3)       No       
sort_order     int(3)       No      0    
status         tinyint(1)   No       
date_added     datetime     No      0000-00-00 00:00:00      
date_modified  datetime     No      0000-00-00 00:00:00      

И описания хранятся в этой таблице

Column            Type          Null
category_id       int(11)       No       
language_id       int(11)       No       
name              varchar(255)  No       
description       text          No       
meta_description  varchar(255)  No       
meta_keyword      varchar(255)  No       
Это было полезно?

Решение

OpenCart имеет

$this->model_catalog_category->getCategory()

метод, и вы передаете идентификатор категории в качестве параметра, например

$category = this->model_catalog_category->getCategory(5);

Это также обрабатывает соответствующее описание, чтобы присоединиться к ним, поэтому вам не нужно получать доступ к ним напрямую. Как уже отметил @Till Helge Helwig, вам нужно использовать рекурсивную функцию, если вы хотите построить из них дерево со всеми подкатегориями. Хорошее место, чтобы увидеть пример этого в коде модуля фактического категории. Прокрутите в нижней части файла catalog/controller/module/category.php и вы увидите рекурсивную функцию, которая создает HTML для нее

Другие советы

У вас уже есть колонка parent_id. Анкет Используйте это, чтобы представлять отношения между категориями. Если категория находится на корневом уровне, вы устанавливаете этот столбец на NULL.

Другим подходом будет третья таблица, которая отображает категории по подкатегориям. Это позволило бы вам идти сверху вниз, а также снизу вверх. Зависит от вашего приложения, какой подход вы используете.

Чтобы справиться с этой иерархией, вам нужно написать некоторые рекурсивные функции и найти правильное представление в PHP, которое может правильно обрабатывать иерархию категории.

Простая рекурсивная функция для печати каких -то хлебных крошек выглядела бы так (я предполагаю, что в этом примере у вас есть какой -то ORM на месте):

function findWayToTop($category, $breadcrumbs = array()) {
    $breadcrumbs[] = $this;
    $parent = $category->getParent();
    if ($parent != null) {
        return findWayToTop($parent, $breadcrumbs);
    } else {
        return $breadcrumbs;
    }
}

Если вы не используете ORM, самый простой способ - извлечь все категории из базы данных и хранить их в массиве, где идентификатор является ключом. Затем вы можете заменить вызовы массива в коде выше, и это также работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top