[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Построить дерево отношений между 10000 записей.
denisOg
Добрый день.
Есть таблица - сотрудники emploee[id_emploee,name,emploee_id].
У каждого есть начальник emploee.emploee_id из этой же таблицы

Нужно построить дерево отношений . Записей всего 12 000-13 000. И будет расти.

Я выбираю и рекусивно строю дерево, вот такой обычной функцией:
function build_tree($cats,$parent_id){
if(is_array($cats) and isset($cats[$parent_id])){
$tree = '<ul>';
foreach($cats[$parent_id] as $cat){
$tree .= '<li>'.$cat['name'];
$tree .= build_tree($cats,$cat['id']);
$tree .= '</li>';
}
$tree .= '</ul>';
}
else return null;
return $tree;
}


Но долго. Пройтись по массиву в 12-13 000 записей рекусивно строя html списки. ..... Как можно по другому построить?
Загружал страницу, а потом делал ajax запрос и получал html дерево. Но все равно, визуально - это долго.
Может есть какие нибудь js технологии, так как работу скрипта наврятли уже ускорить.
UPD: Как вариант можно использовать кеширование (сервер YII).

Спасибо.

_____________
ICQ 444699163
del-denis@rambler.ru
Skype denisOg1
Нужен сайт знакомств, за деньги!
T1grOK
А зачем все дерево выстраивать? Сомневаюсь, что понадобится сразу все.
Может достаточно корневые загрузить, а при открытии ветки подгружать потомков аяксом. http://jquery.bassistance.de/treeview/demo/

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
sergeiss
Цитата (T1grOK @ 1.09.2013 - 14:49)
Может достаточно корневые загрузить, а при открытии ветки подгружать потомков аяксом.

Это первая здравая идея smile.gif

А вторую здравую идею я скажу: делай построение дерева на уровне БД, а не в ПХП или у клиента. При правильном запросе, да еще если не всё дерево брать, а его часть, то просто мгновенно будет летать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
SlavaFr
Присоединяюсь к @sergeiss.
Человеку нужна только та часть информации которая его интересует, а не все сразу.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.