Создание вложенных UL& #39;s на основе данных переменной глубины

У меня есть некоторые иерархические данные, которые мне нужно отобразить в серии вложенных UL. Для каждого элемента у меня есть имя, идентификатор и значение глубины. Обычно я бы просто группировал эти элементы по глубине, но на самом деле мне нужно создать древовидную структуру с моими данными, например: My sample data in MySQL Workbench

Вот мой вопрос :Есть ли хороший способ создать корректную разметку (Мне бы очень хотелось это, если бы я мог распечатать его с правильной табуляцией, но это будет сложно ), когда мои данные будут заключены во вложенные UL? У меня уже есть решение, которое работает, но я получаю один случайный тег. Вот код, который у меня есть для этого:

 'Earth'
            GROUP BY node.ID
            ORDER BY node.LeftVal";
    $results = $db->executeQuery($query);
?>



    
    


    
    
    '.PHP_EOL.''.$row["Name"]."".PHP_EOL; $diff = $last_level - $row["level"]; if($diff == 0){ // Sibling echo ($row["level"] != 0) ? ''.PHP_EOL.$link:$link; } elseif($diff < 0){ // Child $demoter = '
      '.PHP_EOL; for ($i=0; $i > $diff; $i--) { echo $demoter; } echo $link; } else{ // Parent $promoter = ''.PHP_EOL.'
    '; for ($i=0; $i < $diff; $i++) { echo ($row["level"] != 0) ? $promoter.PHP_EOL."":$promoter; } echo $link; } $last_level = $row["level"]; } ?>

Любые идеи?

::Редактировать ::Я создал pastebin со сгенерированным источником, который не проверяется. Pastebin.com

::РЕДАКТИРОВАТЬ 2 ::Вот схема для таблицы Region. Он разработан с использованием гибрида модели вложенного набора и модели списка смежности.

CREATE TABLE Region (
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Stores the ID for the Region.',
    Name VARCHAR(45) NOT NULL COMMENT 'Stores the name of the Region',
    Region_Type VARCHAR(45) NOT NULL COMMENT 'Stores the Region type.',
    Parent INT COMMENT 'Stores the ID of the Parent Region',
    LeftVal INT NOT NULL,
    RightVal INT NOT NULL,
PRIMARY KEY (ID)
) COMMENT 'Stores information about all Regions.' ENGINE=INNODB
ROW_FORMAT=DEFAULT CHARACTER SET utf8 collate utf8_general_ci;

5
задан Brendon Dugan 28 February 2012 в 15:13
поделиться