![]() |
[php] Постройка дерева по данным базы
Есть таблица категорий category с колонками category_id INT, name VARCHAR(255) и parent INT.
Parent ссылается на category_id родительской категории, -1 означает, что эта катеория корневая.. Требуется построить дерево так, чтобы оно иерархически отображало структуру категорий. К примеру: TABLE Category (category_id) - (name) - (parent) 0 - Новости - (-1) 1 - Категория новостей 1 - 0 2 - Категория новостей 2 - 0 3 - Файлы - (-1) 4 - Категория файлов 1 - 3 5 - Категория файлов 2 - 3 6 - Подкатегория новостей - 1 7 - Подкатегория файлов - 5 Должно отображаться так: Новости - Категория новостей 1 - - Подкатегория новостей - Категория новостей 2 Файлы - Категория файлов 1 - Категория файлов 2 - - Подкатегория файлов Помогите с алгоритмом обработки... |
А какой тут вариант кроме рекурсии?
Добавлено через 6 минут: если у тебя база конечно мускул.. function getTree($parent=-1, $link){ result = mysql_query('select from category where parent = '.$parent, $link); for($i=0; $i<mysql_numRows($result); $i++){ echo mysql_result($i, 'name', $result); getTree(mysql_result($i, 'id', $result), $link) } } Вообще стоит подумать - каких запросов выполняется больше на выборку или изменение и взависимости от этого выбрать структуру базы - ибо при большом дереве это все будет долго выполняться |
Имхо луше взять всю базу в массив, а выборку прозводить потом... Т.е. не пускать множество mysql запросов...
|
угу тогда при большом дереве уйдет в никуда память сервака..
|
Это какой же размер должен быть у дерева, чтобы память "ушла в никуда"?!
З.Ы. Кстати, это база от скрипта php_catalog, я угадал? |
Да не особо большой, и пользователя так три одновременно
|
medved2002 V0iD
Мне все равно все данные потом в массив загонять, т.к. мне сразу вывод делать - не вариант. На выборку намного больше запросов будет. Да, насчет php_catalog - увы, нет. Это я сам пытаюсь написать CMS, для админской панели нужно... |
Вот этот вариант - для быстрая выборка, но долгое добавление
http://searchdatabase.techtarget.com...537290,00.html Добавлено через 1 минуту: Посвещенно тойже проблеме с кодами на ПХП http://www.sitepoint.com/article/1105/ Добавлено через 1 минуту: До кучи http://www.evolt.org/article/Four_wa...047/index.html |
medved2002
Премного благодарен, очень помогло :) Спасибо! |
Часовой пояс GMT +4, время: 21:31. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.