Создаём и выводим дерево страниц в PHP

Создаём дерево:

<?php

    function make_tree($level = 0)
    {

	    $tree = [];

	    // Получаем все родительские страницы
	    $pages = $this->db->select("SELECT * FROM pages WHERE id_parent = '$level'");

	    // Если массив с родительскими страницами не пуст
	    if(!empty($pages)) {

		    foreach($pages as $page) {
		
			    // Добавляем в массив элемент "children" (потомки) и вызываем рекурсивно функцию с id_page
			    // Помещаем туда всех потомков одного родителя
			    $page['children'] = $this->make_tree($page['id_page']);

			    // Помещаем в массив $map
			    $tree[] = $page;

		    }

	    }

	    return $tree;
    }

?>

Выводим дерево:

<?php 

function print_tree($tree, $shift = 0) {

	if(!empty($tree)) {

		foreach($tree as $page) : ?>
            <option value="<?=$page['id_page']?>">
            <?php for($i = 0; $i < $shift; $i++) echo '&nbsp;'; ?>
            <?=$page['title']?></option>
            <?php print_tree($page['children'], $shift + 5); 
		endforeach;

	}

}
?>

В форме:

<select name="id_parent">
	<option value="0">Без раздела</option>
	<?php print_tree($tree); ?>
</select>

Оставьте комментарий!

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий:


Написать новый комментарий

Видео

Самые полезные видео на темы "веб-разработка", "Linux" и "IT". Смотри и обучайся!

Подробнее »

Сделки

Самые горячие и выгодные сделки, акции и скидки на видео-курсы, софт, услуги, книги и железо из всего рунета.

Подробнее »

Планета

Наша планета собирает интересные статьи из различных источников и объединяет их в одну ленту. Которую можно читать на нашем сайте.

Подробнее »

Сообщество

Наше сообщество славится своим дружелюбием и стремлением делиться приобретённым опытом с новыми веб-разработчиками и пользователями ОС Linux.

Любой желающий может совершенно свободно зарегистрироваться на нашем сайте и принять активное участия в жизни сообщества!

Подробнее »