Построение дерева иерархии с помощью PHP / MySQL

Рассмотрим пример построения дерева иерархии (в развернутом виде) на основе информации из базы данных с помощью PHP и MySQL. Ключ к решению данной задачи – использование рекурсивной функции. Иерархия разделов будет храниться в таблице базы данных MySQL. .
Ниже на скриншоте показана данная таблица (catalogue):

  • id – первичный ключ таблицы
  • pid – id родительского раздела

Далее напишем следующий PHP-скрипт:

1. Файл dbopen.php (открывает соединение с MySQL)

<?php $hostName = ""; $userName = "yura"; $password = "yura"; $databaseName = "tree"; if (!($link=mysql_connect($hostName,$userName,$password))) { printf("Ошибка при соединении с MySQL !\n"); exit(); } if (!mysql_select_db($databaseName, $link)) { printf("Ошибка базы данных !"); exit(); } ?>


2. Файл index.php (основной скрипт)

<?php include( "dbopen.php" ); 

function ShowTree($ParentID, $lvl) { 

global $link; global $lvl; $lvl++; 

$sSQL="SELECT id,title,pid FROM catalogue WHERE pid=".$ParentID." ORDER BY title";$result=mysql_query($sSQL, $link);

if (mysql_num_rows($result) > 0) {echo("<UL>\n");while ( $row = mysql_fetch_array($result) ) {$ID1 = $row["id"];echo("<LI>\n");echo("<A HREF=\""."?ID=".$ID1."\">".$row["title"]."</A>"." \n");ShowTree($ID1, $lvl); $lvl--;}echo("</UL>\n");}

}

ShowTree(0, 0); 

mysql_close($link); 

?>


Всю работу выполняет рекурсивная функция ShowTree(). Ниже на скриншоте показан пример работы index.php:

Поделиться в соц. сетях

mailru Построение дерева иерархии с помощью PHP / MySQL
facebook Построение дерева иерархии с помощью PHP / MySQL
odnoklassniki Построение дерева иерархии с помощью PHP / MySQL
livejournal Построение дерева иерархии с помощью PHP / MySQL
googlebuzz Построение дерева иерархии с помощью PHP / MySQL

Также рекомендуем:

  1. MySQL – это просто! Сначала ответим на вопрос – что такое MySQL? Это База Данных (БД), в которой структурировано хранятся данные. Следует второй вопрос – зачем отказываться от простых и удобных файлов к сложной БД? Потому что файлы, генерируемые каким либо скриптом на основе файловой БД (гостевые книги, CMS, форумы), постепенно начинают увеличиваться в размере, а так же их [...]...
  2. Переполнение буфера и раскрытие данных в MySQL Программа: MySQL 4.1.18, и более ранние версии.MySQL 5.0.20 . Опасность: Средняя Наличие эксплоита: Да Описание: Уязвимость позволяет удаленному авторизованному пользователю получить доступ к важным данным и скомпрометировать уязвимую систему. 1. Уязвимость существует из-за недостаточной обработки данных в команде COM_TABLE_DUMP. Удаленный пользователь может с помощью специально сформированного пакета получить доступ к важным данным на системе (к [...]...
  3. Работа с SQLite Введение SQLite – это реляционная база данных, запросы к которой можно осуществлять при помощи языка запросов SQL. База данных не поддерживает все особенности SQL и уступает в функциональности другим развитым СУБД, но вполне подходит для хранения и извлечения информации.. Отличие SQLite от MySQL и аналогичных СУБД Классические СУБД, такие как MySQL (а так же MS [...]...
  4. Пример создания многоязыкового приложения (XML) Введение Вопрос разработки многоязычного web – приложения (сайта) или приложения с поддержкой интерфейса пользователя на разных языках, поднимается довольно часто. Если еще пару лет назад данная задача была не так актуальна, то сейчас подобная функциональность де – факто стала одним из требований заказчика при создании web – ориентированного приложения.. Формулировка задачи Целью данной работы является [...]...
  5. tmp профессиональный дизайн; регистрация домена .RU на 1 год; наполнение до 10 страниц сайта; блок новостей; прайс-лист; форма заказа с сайта; регистрация в поисковых системах; счетчик посещений; срок изготовления 3-5 дней. акция 3990=...
  6. Ловушка для спам-бота Многие спам-боты, чтобы скрыть свои реальные имена (названия), которые легко отследить по записи user_agent, изменяют эту запись, меняя её на записи разных браузеров (например: «mozilla/4.0 (compatible; msie 5.5; windows nt 5.0)» и так далее). Также эти боты игнорируют стандарты записей для файла robots.txt (описание стандарта Вы можете прочесть здесь http://www.robotstxt.org/wc/exclusion.html robots.txt standard).. Можно, конечно, пойти [...]...
  7. Обзор платных хостингов Для начала разберёмся, что такое хостинг. Хостинг – это услуги размещение Вашего сайта в интернете. В 2002 году появилось очень много новых компаний предоставляющие хостинг. Так вот, в этой статье я опишу подробно новые и старые хостинги.. 100GIG (http://www.100gig.com/) Русский хостинг, на котором нужно платить только за трафик, 1000 MB. Трафика стоит 1$. На каждый [...]...
  8. PHP и формы Ни для кого не является секретом, что наиболее распространенным способом взаимодействия html-страницы с сайтом является форма. Форма (то есть html-элемент образуемый тегом form) используется и бесплатными почтовыми службами, электронными магазинами и многими другими типами сайтов.. Обработка простых форм посредством PHP не представляет никакого труда. Однако время от времени возникает потребность обработать форму, содержащую несколько однотипных [...]...
  9. Преимущества локальной оптимизации Займитесь локальной оптимизацией. Зачастую оптимизации локального поиска не уделяется достаточно внимания, а между тем это отличный способ привлечения на ваш сайт местного трафика. Включив локальную информации в свои тэги и страницы, вы можете потенциальным клиентам найти специальную информацию по району и сфере деятельности, какие их интересует.. Что такое оптимизация локального поиска? Оптимизация локального поиска – [...]...
  10. GlassBox Описание Недавно обнаружили весьма интересную javascript библиотеку Glassbox.С ее помощью можно создавать прозрачные рамки, цветные полупрозрачные слои и различные визуальные эффекты, такие как плавное появление и исчезновение слоев.. Эта библиотека весьма компактна и включает в себя библиотеки Prototype и Script.aculo.us. К основным плюсам библиотеки можно отнести: * Легкость использования; * Кроссбраузерность (Работает в IE6+ , [...]...
  11. Для тех, кто хочет больше,чем HTML Для тех, кто хочет самостоятельно научиться локально делать сайты, программировать, используя языки: php, sgi, да еще с поддержкой базы данных (mysql). Все это Вы сможете, если установите локальный сервер на своим компъютере. . В этой статье я не даю подробных инструкций и комментариев, так как это получится целый талмуд. Я сам не супер-мупер пользователь, да [...]...
  12. Проверка хостинг провайдера Начнем с того, что обязательно должно быть учтено при составлении хостинг пакета (с учетом интереса клиента) или, проще говоря, что обязательно включено в каждом действительно качественном хостинг провайдере:. Технические характеристики сервера и его канал подключения должны соответствовать реальности. Обязательно указывать количество и тип проектов, размещенных на одном сервере, поскольку тогда будет приблизительно видно клиенту его [...]...
  13. Частые ошибки при поисковой оптимизации сайта. Как это избежать? 22 наиболее часто встречаемых ошибок при самостоятельной оптимизации сайта под поисковые системы:. Регистрируемая в поисковой системе страница должна содержать ссылки на другие страницы сайта. В противном случае она будет единственным, что проиндексирует поисковая машина.Не стоит регистрировать сайт в поисковых системах, который находится в стадии разработки (к каталогам, доскам объявлений и форумам это относиться в меньшей [...]...
  14. Крупнейший в мире интернет-аукцион e-Bay теперь и на русском! Крупнейший в мире интернет-аукцион e-Bay вскоре станет, доступен и на русском языке. По сообщению Коммерсант, 16 марта 2010г. будет открыт доступ к русскоязычному сайту. Сейчас можно посмотреть русскоязычную версию по адресу global.ebay.com, где аукцион работает пока что в тестовом режиме. . Главные отличия русской версии сайта – это то, что весь интерфейс переведен на русский, [...]...
  15. Текст из воды Step 1Создайте документ и напишите любой текст. Растеризуйте слой.. Используя кисть, добавьте несколько капель и подтеков к тексту. Объедините оба слоя Layer > Flatten Image. Step 2Идем в палитру каналов и создаем маску канала путем перетаскивания любого слоя Red, Green или Blue на иконку New Channel внизу палитры каналов. Называем его water. Далее инвертируем канал [...]...

Комментарии запрещены.