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;
<?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 * FROM `pages`");
$pages = $stmt->fetch_all(MYSQLI_ASSOC);
print_r($pages);
echo show_pages($pages);