PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE `pages` ( `id` int NOT NULL, `name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL, `parent` int NOT NULL, `content` text COLLATE utf8mb4_general_ci ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; INSERT INTO `pages` (`id`, `name`, `parent`, `content`) VALUES (1, 'Про школу', -1, NULL), (2, 'Освітня діяльність', -1, NULL), (3, 'Безпека життєдіяльності', -1, NULL), (4, 'Виховна робота', -1, NULL), (5, 'Контакти', -1, NULL), (6, 'Правила прийому', 1, NULL), (7, 'Правила прийому до 1класу', 6, NULL); ALTER TABLE `pages` ADD PRIMARY KEY (`id`); ALTER TABLE `pages` MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; COMMIT; SELECT `pages`.*, `parent`.`id` `parent_id` FROM `pages` LEFT JOIN `pages` `parent` ON `pages`.`parent` = `parent`.`id`
Copy Clear
Copy Format Clear
<?php function show_pages($pages, $parent_id = -1, $nesting = 0) { $html = ''; if ($parent_id != -1) { array_multisort(array_column($pages, 'name'), SORT_ASC, $pages); } foreach ($pages as $page) { if ($page['parent'] == $parent_id) { if ($nesting == 0) { $html .= ' <div class="main-cat"> <a href="/page?id=' . $page['id'] . '&' . $page['name'] . '" class="header__link">' . $page['name'] . '</a> <div class="sub-cats"> ' . show_pages($pages, $page['id'], $nesting + 1) . ' </div> </div> '; } elseif ($nesting == 1) { $html .= ' <div class="sub-cat"> <a href="/page?id=' . $page['id'] . '&' . $page['name'] . '" class="header__link">' . $page['name'] . '</a> <div class="links"> ' . show_pages($pages, $page['id'], $nesting + 1) . ' </div> </div> '; } elseif ($nesting == 2) { $html .= ' <div class="link"> <a href="/page?id=' . $page['id'] . '&' . $page['name'] . '" class="header__link">' . $page['name'] . '</a> </div> '; } } } return $html; } $stmt = mysqli_query( $connection, "SELECT `pages`.*, `parent`.`id` `parent_id` FROM `pages` LEFT JOIN `pages` `parent` ON `pages`.`parent` = `parent`.`id`" ); $pages = $stmt->fetch_all(MYSQLI_ASSOC); print_r($pages); echo show_pages($pages);
Show:  
Copy Clear