Построение дерева иерархии с помощью 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 ! ");
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(
"
    ");
    while (
    $row = mysql_fetch_array($result) ) {
    $ID1 = $row["id"];
    echo(
    "
  • "
  • );
    echo(
    "?ID=".$ID1."">".$row["title"].""." ");
    ShowTree($ID1, $lvl);
    $lvl--;
    }
    echo(
    "
"
);
}

}

ShowTree(0, 0);

mysql_close($link);

?>


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



Источник: http://www.srubil.ru
Категория: PHP & MySQL | Добавил: kotenok1343 (06.03.2010)
Просмотров: 492 | Теги: MySQL | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]