Я пытаюсь написать php-код, который бы приносил мне многоуровневое меню с неограниченной глубиной. Я хочу иметь возможность сделать это только с одним запросом и одним циклом. Вот что у меня есть: У меня есть таблица menu_items со следующими столбцами:Многоуровневое меню в mysql/php
id
categories_id (overall menu id)
title (Text title)
link (Link)
ord (the order within the category itself)
parent (Parent item, which is basically another item, different from categories_id)
depth (Menu level. For whatever reason, I think it's going to help me to know the depth of every particular item)
Все пункты меню связаны с определенным меню по categories_id, и все они связаны с их родительского элемента на «родителя» с элементами верхнего уровня, имеющими 0 для родителя.
Теперь мне нужно, чтобы mysql возвращал мне весь список элементов (под теми же category_id) таким образом, чтобы один проход цикла мог организовать их в симпатичном многомерном массиве.
Как бы я это сделал? Один из способов, которым я думал, это сделать, если бы я мог заставить MySQL заказывать элементы таким образом, чтобы каждый элемент выполнялся всеми его дочерними элементами.
Например: Если у меня есть эта структура:
Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Где пункты 1,7 и 8 являются верхнего уровня пустые элементы, пункт 2 имеет троих детей, и 4 пп имеет пункт 5 в качестве своего ребенка
Мне понадобится mysql, чтобы заказать вышеуказанные товары таким образом: Пункт 1, затем пункт 2, после этого, поскольку в пункте 2 есть дети, он должен вывести элементы 3 и 4, так как 4 имеет ребенка, его следует продолжить пункт 5, затем возвращается к пункту 6 ... и т. д.
Есть ли способ заставить MySQL заказать его вот так? Или я мог бы достичь этого каким-то другим способом?
Извините, если мой вопрос немного запутан.
Существует довольно простое объяснение иерархических структур данных: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ –