Есть БД:
id | parent_id | name
1 0 Первое меню верхнего уровня
2 1 Первое меню второго уровня
3 2 Второе меню второго уровня
4 0 Второе меню верхнего уровня
есть запрос SELECT * FROM `menu`
надо как-то создать массив в цикле, которые можно использовать для построения дерева меню
Другие языки программирования и технологии
Помогите понять как построить многоуровневое меню
для начала вникните в суть рекурсии
Алгоритм вполне естественный.
Только надо правильно пользоваться терминологией.
Прежде всего меню - это не строка, а список строк-пунктов (иногда из одной строки, иногда пустой) . Этот список имеет имя и адрес (в программе) , а наименование (комментарий) и ссылка на этот список могут быть где угодно. Но если меню структурируется, то это обязательно найдётся в одной из ветвей полного меню.
Ясно как действует готовое меню: нужно открыть главное меню, выбрать элемент (пункт меню) который может оказаться или конечной командой или ссылкой на список-подменю. И так идём вглубь дерева от корня.
При необходимости можно, перейдя на нужный уровень меню добавить в меню или пункт- вызов команды, или пункт-подменю.
Если желательно создать-добавить группу пунктов на одном уровне, естественно можно применить цикл (но только отдельно для этого уровня в текущей ветви) . Разумеется, если в момент оформления одного пункта Вы уже его создали, то можно в него войти (выбрать) , и применив вложенный цикл, добавить подпункты, затем выйдя из цикла, продолжить оформлять остальные пункты первого уровня.
Но всё-таки для скорости чтения каждый список лучше оформлять компактно, не отвлекаясь, а нижний уровень создавать при втором проходе верхнего списка.
Вот пожалуй и всё, что можно посоветовать. Хотя в реальности меню может создаваться в произвольной очерёдности расширения ветвей дерева.
Только надо правильно пользоваться терминологией.
Прежде всего меню - это не строка, а список строк-пунктов (иногда из одной строки, иногда пустой) . Этот список имеет имя и адрес (в программе) , а наименование (комментарий) и ссылка на этот список могут быть где угодно. Но если меню структурируется, то это обязательно найдётся в одной из ветвей полного меню.
Ясно как действует готовое меню: нужно открыть главное меню, выбрать элемент (пункт меню) который может оказаться или конечной командой или ссылкой на список-подменю. И так идём вглубь дерева от корня.
При необходимости можно, перейдя на нужный уровень меню добавить в меню или пункт- вызов команды, или пункт-подменю.
Если желательно создать-добавить группу пунктов на одном уровне, естественно можно применить цикл (но только отдельно для этого уровня в текущей ветви) . Разумеется, если в момент оформления одного пункта Вы уже его создали, то можно в него войти (выбрать) , и применив вложенный цикл, добавить подпункты, затем выйдя из цикла, продолжить оформлять остальные пункты первого уровня.
Но всё-таки для скорости чтения каждый список лучше оформлять компактно, не отвлекаясь, а нижний уровень создавать при втором проходе верхнего списка.
Вот пожалуй и всё, что можно посоветовать. Хотя в реальности меню может создаваться в произвольной очерёдности расширения ветвей дерева.
Похожие вопросы
- Помогите понять вопрос внутри
- Вопрос для знатоков комп. железа! Помогите понять - что здесь написано? Экран появляется всего на 1 секунду. Еле поймал.
- Помогите понять программу
- Помогите понять задание. Pascal ABC
- помогите понять-программа, которая переводит новую написанную программу на языке, понятном прогр
- Начала изучать InDesign помогите понять, пожалуйста.
- паскаль. помогите понять одну формулу в программе. внутри...
- помогите понять задание)
- Помогите понять цикл тут.
- Помогите понять вообще всю суть изучения языка программирования.