PHP: Пример самого простого кода — дерево категорий сайта

Одна из типичных задач — рекурсивное дерево, например, категории сайта… Как сделать, и как сделать правильно)

Начальный кусочек — простейшее соединение с базой, предположим там уже есть таблица menu с полями id, title, id_parent (где собственно родитель — это номер родительской категории / меню / чего угодно, если он 0 — это корневая, начальная категория)

Против лома нет приема без рекурсии

Самый простейший способ сделать дерево — взять родителей список, и потом деток у каждого… заметьте — чтобы тут добавить третий уровень — Вы еще глубже по коду уйдете, поэтому мы введем рекурсивную функцию на следующем шаге

Против лома нет приема с рекурсией

Уже чуть лучше — только ведь мы можем с нулевого уровня и стартовать (вывод у нас сейчас не отличается)

Против лома нет приема с рекурсией с нулевого уровня

Еще чуть лучше, но посмотрите сколько у нас запросов … а выводим мы всего лишь всю таблицу) т.е. это плохой способ нагрузить базу кучей мелких, когда можно один большой

Лучше без лома

Упорядочим заранее строки для вывода

Тестирование

Чтобы совсем красиво проверить — можете алгоритм запускать на сгенерированных заранее данных — так интереснее и явно видна разница скорости (почему один запрос лучше кучи)

Можно дополнительно прочесть про технологию выделения рекурсивных шагов — Первые шаги: Готовое решение рекурсии категорий

Оставить комментарий

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">