![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
DezmASter |
|
||||
![]() Дизайнер :) ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1520 Регистрация: 3.2.2006 Где: Украина, Запорожь е Репутация: нет Всего: 109 |
Рассмотрим пример построения дерева иерархии (в развернутом виде) на основе информации из базы данных с помощью PHP и MySQL. Ключ к решению данной задачи - использование рекурсивной функции. Иерархия разделов будет храниться в таблице базы данных MySQL.
Ниже на скриншоте показана данная таблица (catalogue): ![]() * id - первичный ключ таблицы * pid - id родительского раздела Далее напишем следующий PHP-скрипт: 1. Файл dbopen.php (открывает соединение с MySQL)
2. Файл index.php (основной скрипт)
Всю работу выполняет рекурсивная функция ShowTree(). Ниже на скриншоте показан пример работы index.php: ![]() |
||||
|
|||||
Denwer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.6.2007 Где: Харьков Репутация: нет Всего: нет |
если я нахожусь на "разделе 1", как сделать чтобы он не был ссылкой? А просто текст
|
|||
|
||||
DioNiR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
не правильный подход. Если много категорий то получится много запросов.
--------------------
Думали это конец? Ха, всё только начинается. |
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 9 Всего: 401 |
DioNiR абсолютно прав. Для построения всего дерева предложенный подход не годится. Сам видел, как уже с несколькими сотнями ветвей дерево по этой схеме строилось секунд 20.
Вот вариант, как это можно сделать одним запросом, с помощью вспомогательного массива $tree:
Это сообщение отредактировал(а) SelenIT - 7.7.2007, 21:11 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
DioNiR |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
а какой смысол в твоём коде несёт переменная $lvl? --------------------
Думали это конец? Ха, всё только начинается. |
||||
|
|||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |