imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 20.11.2003, 15:51     # 1
[stv]
Newbie
 
Регистрация: 31.05.2003
Сообщения: 9

[stv] Путь к славе только начался
Question [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
- - Подкатегория файлов

Помогите с алгоритмом обработки...
[stv] вне форума  
Старый 20.11.2003, 16:41     # 2
medved2002
Guest
 
Сообщения: n/a

А какой тут вариант кроме рекурсии?

Добавлено через 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)
}
}

Вообще стоит подумать - каких запросов выполняется больше на выборку или изменение и взависимости от этого выбрать структуру базы - ибо при большом дереве это все будет долго выполняться
 
Старый 20.11.2003, 17:28     # 3
V0iD
Junior Member
 
Аватар для V0iD
 
Регистрация: 01.06.2003
Адрес: Msk
Пол: Male
Сообщения: 138

V0iD Путь к славе только начался
Имхо луше взять всю базу в массив, а выборку прозводить потом... Т.е. не пускать множество mysql запросов...
__________________
Завтра будет.
Лучше.
V0iD вне форума  
Старый 20.11.2003, 17:33     # 4
medved2002
Guest
 
Сообщения: n/a

угу тогда при большом дереве уйдет в никуда память сервака..
 
Старый 20.11.2003, 17:38     # 5
V0iD
Junior Member
 
Аватар для V0iD
 
Регистрация: 01.06.2003
Адрес: Msk
Пол: Male
Сообщения: 138

V0iD Путь к славе только начался
Это какой же размер должен быть у дерева, чтобы память "ушла в никуда"?!

З.Ы. Кстати, это база от скрипта php_catalog, я угадал?
__________________
Завтра будет.
Лучше.
V0iD вне форума  
Старый 20.11.2003, 17:44     # 6
medved2002
Guest
 
Сообщения: n/a

Да не особо большой, и пользователя так три одновременно
 
Старый 20.11.2003, 20:14     # 7
[stv]
Newbie
 
Регистрация: 31.05.2003
Сообщения: 9

[stv] Путь к славе только начался
medved2002 V0iD
Мне все равно все данные потом в массив загонять, т.к. мне сразу вывод делать - не вариант. На выборку намного больше запросов будет.

Да, насчет php_catalog - увы, нет. Это я сам пытаюсь написать CMS, для админской панели нужно...
[stv] вне форума  
Старый 21.11.2003, 13:17     # 8
medved2002
Guest
 
Сообщения: n/a

Вот этот вариант - для быстрая выборка, но долгое добавление
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
 
Старый 21.11.2003, 19:26     # 9
[stv]
Newbie
 
Регистрация: 31.05.2003
Сообщения: 9

[stv] Путь к славе только начался
medved2002
Премного благодарен, очень помогло
Спасибо!
[stv] вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:53.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.