Багаторівневе меню на PHP та MySQL. §2. Як зробити вертикальне меню, що випадає на php Inurl php own menu id піраміда

Головна / Налаштування

Якщо ваш веб-сайт не обмежується однією веб-сторінкою, варто подумати про додавання панелі навігації (меню). Меню - розділ веб-сайту, який допомагає відвідувачу переміщатися по сайту. Будь-яке меню є список посилань, що ведуть на внутрішні сторінки сайту. Самим простим способомдодати панель навігації на сайт є створення меню з допомогою CSSі HTML.

Вертикальне меню

Першим кроком створення вертикального меню буде створення маркованого списку. Також нам потрібно мати можливість ідентифікувати список, тому ми додамо до нього атрибут id з ідентифікатором "navbar". Кожен елемент

  • нашого списку міститиме за одним посиланням:

    Наше наступне завдання полягає у скиданні стилів списку, встановлених за замовчуванням. Нам потрібно прибрати зовнішні та внутрішні відступи біля самого списку та маркери у пунктів списку. Потім поставимо потрібну ширину:

    #navbar ( margin: 0; padding: 0; list-style-type: none; width: 100px; )

    Тепер настав час стилізувати самі посилання. Ми додамо до них фоновий колір, змінимо параметри тексту: колір, розмір та насиченість шрифту, приберемо підкреслення, додамо невеликі відступи та перевизначимо відображення елемента з рядкового на блоковий. Додатково було додано ліву та нижню рамки до пунктів списку.

    Найважливішою частиною наших змін є перевизначення малих елементів на блокові. Тепер наші посилання займають весь доступний простір пунктів списку, тобто для переходу на посилання нам більше не потрібно наводити курсор точно на текст.

    #navbar a ( background-color: #949494; color: #fff; padding: 5px; text-decoration: none; font-weight: bold; border-left: 5px solid #33ADFF; display: block; ) #navbar li ( border-left: 10px solid #666; border-bottom: 1px solid #666;

    Ми об'єднали весь код, описаний вище, в один приклад, тепер, натиснувши кнопку спробувати, ви можете перейти на сторінку з прикладом і побачити результат:

    Назва документу

    Спробувати »

    При наведенні курсору миші до пункту меню його зовнішній виглядможе змінюватися, привертаючи увагу користувача. Створити такий ефект можна за допомогою псевдокласу: hover.

    Повернемося до розглянутого раніше прикладу вертикального меню та додамо до таблиці стилів таке правило:

    #navbar a:hover ( background-color: #666; border-left: 5px solid #3333FF; ) Спробувати »

    Горизонтальне меню

    У попередньому прикладі ми розглянули вертикальну навігаційну панель, яку найчастіше можна зустріти на сайтах ліворуч або праворуч від області з основним контентом. Однак меню з навігаційними посиланнями також часто розташовується по горизонталі у верхній частині веб-сторінки.

    Горизонтальне меню можна створити за допомогою стилізації звичайного списку. Властивості display для елементів

  • потрібно надати значення inline, щоб пункти списку розташовувалися один за одним.

    Для розміщення пунктів меню по горизонталі спочатку створимо маркований список з посиланнями:

    Напишемо для нашого списку пару правил, що скидають стиль, що використовується для списків за замовчуванням, і перевизначимо пункти списку з блокових на рядкові:

    #navbar ( margin: 0; padding: 0; list-style-type: none; ) #navbar li ( display: inline; ) Спробувати »

    Тепер нам залишилося лише визначити стильове оформленнядля нашого горизонтального меню:

    #navbar ( margin: 0; padding: 0; list-style-type: none; border: 2px solid #0066FF; border-radius: 20px 5px; width: 550px; text-align: center; background-color: #33ADFF; ) #navbar a ( color: #fff; padding: 5px 10px; text-decoration: none; font-weight: bold; display: inline-block; width: 100px; ) #navbar a:hover ( border-radius: 20px 5px ; background-color: #0066FF; ) Спробувати »

    Випадаюче меню

    Меню, яке ми будемо створювати, матиме основні навігаційні посилання, розташовані в горизонтальній навігаційній панелі, і підпункти, які відображатимуться тільки після наведення курсору миші на той пункт меню, до якого ці підпункти відносяться.

    Спершу нам потрібно створити HTML-структуру нашого меню. Основні навігаційні посилання ми помістимо до маркованого списку:

    Підпункти ми розмістимо в окремому списку, вклавши його в елемент

  • , який містить батьківське посилання щодо підпунктів Тепер ми маємо чітку структуру нашої майбутньої навігаційної панелі:

    Спробувати »

    Тепер приступимо до написання CSS коду. Для початку необхідно приховати список підпунктів за допомогою оголошення display: none;, щоб вони не відображалися на веб-сторінці весь час. Для відображення підпунктів нам потрібно, щоб при наведенні на елемент

  • список знову був перетворений на блоковий елемент:

    #navbar ul ( display: none; ) #navbar li:hover ul ( display: block; )

    Забираємо в обох списків відступи та маркери, встановлені за замовчуванням. Елементи списку з навігаційними посиланнями робимо плаваючими, формуючи горизонтальне меню, але для елементів списку, що містять підпункти, задаємо float: none; щоб вони відображалися один під одним.

    #navbar, #navbar ul ( margin: 0; padding: 0; list-style-type: none; ) #navbar li ( float: left; ) #navbar ul li ( float: none; )

    Потім нам потрібно зробити так, щоб наше підменю, що випадає, не зміщувало контент, розташований під панеллю навігації, вниз. Для цього ми поставимо пункти списку position: relative; а списку, що містить підпункти position: absolute; і додамо властивість top із значенням 100%, щоб абсолютно позиціоноване підменю відображалося точно під посиланням.

    #navbar ul ( display: none; position: absolute; top: 100%; ) #navbar li ( float: left; position: relative; ) #navbar ( height: 30px; ) Спробувати »

    Висота для батьківського списку була додана спеціально, так як браузери не враховують як вміст елемента плаваючий контент, без додавання висоти наш список буде проігнорований браузером і контент, що слідує за списком, буде обтікати наше меню.

    Тепер нам залишилося стилізувати обидва наші списки і меню, що випадає, буде готове:

    #navbar ul ( display: none; background-color: #f90; position: absolute; top: 100%; ) #navbar li:hover ul ( display: block; ) #navbar, #navbar ul ( margin: 0; padding: 0; list-style-type: none; ) #navbar ( height: 30px; background-color: #666; padding-left: 25px; min-width: 470px; ) height: 100%; ) #navbar li a ( display: block; padding: 6px; width: 100px; ) #navbar li:hover (background-color: #f90; ) #navbar ul li:hover (background-color: #666; )

    Меню сайту на php, який керується php скриптами, має свої особливості. Це не просто абсолютні або відносні посилання, хоча це цілком може бути і так, а, як правило, блоки посилань бічних панелей, що динамічно формуються з розділами і підрозділами і блоки посилань з самих внутрішніх сторінок сайту. Меню, що динамічно формується, дуже зручно, тому, як його можна вставляти в будь-яке місце сайту і, що найважливіше в потрібний час. Тобто при переході в різні розділи та підрозділи можна динамічно розгортати різні блоки меню. Причому вони можуть бути різні не лише за змістом, а й за формою та оформленням. У статичному сайті теж можна проробляти такі фінти, але це буде коштувати додаткових файлів шаблону і ще масу всяких хитрощів. Хоча сайт написаний на php нічого цього не вимагає. Шаблон лишиться, як і був. Усім керуватиме один або кілька простих php скриптів.

    Для того, щоб переконатися в цьому, достатньо написати php скрипт для динамічного формування меню, наприклад першої рубрики і змусити його розгорнути меню цієї рубрики через вже написаний раніше скрипт . Інші рубрики можна буде сформувати подібним чином. Причому код самого скрипта у своїй мало чим практично зміниться. Змінюватиметься лише текстовий файл, який визначатиме назви посилань і самі посилання. Код такого скрипту наведено нижче за текстом.

    // Формувач меню
    $menu = @file($rubric1_menu);
    $ lines = count ($ menu);
    for ($i = 0; $i< $lines; $i++)
    {
    list($menu_link,$menu_name,$menu_title)=explode("::", $menu[$i]);
    if($page == rub1_part1 and $i == 0) ($refcolor = "style="color:#cc0000"";)
    elseif($page == rub1_part2 and $i == 1) ($refcolor = "style="color:#cc0000"";)
    elseif($page == rub1_part3 and $i == 2) ($refcolor = "style="color:#cc0000"";)
    else ($refcolor = "";)
    $rubric1.="

  • ".$menu_name."
  • ";
    }
    ?>

    Для того, щоб такий скрипт працював необхідний текстовий файл, в якому зберігатимуться назви посилань меню, самі посилання та їх title. Створити такий файл нескладно, достатньо виконати з головного меню програми Dreamweaver команду File -> New, створити новий html документ, як було описано раніше, перевірити і якщо необхідно змінити кодування нового файлу на UTF-8, а потім зберегти його під ім'ям rubric1.dat у попередньо створеній йому папці data. Повний шлях до цього файлу буде D:/Mysitephp/data/rubric1.dat. Вміст файлу, наведений нижче, це посилання, їх назви та їх title (підказки). Крім того, щоб запустити даний скрипту роботу, його необхідно підключити за допомогою функції include()у шаблонізаторі main.php.

    Rub1_part1::Розділ 1::Розділ 1 рубрики 1::
    rub1_part2::Розділ 2::Розділ 2 рубрики 1::
    rub1_part3::Розділ 3::Розділ 3 рубрики 1::

    Крім цього необхідно також створити невеликий скрипт з установками, в якому зберігатимуться повна адреса сайту, шляхи до папок сторінок та мета описів сайту, шляхи до файлів меню сайту та підключити його за допомогою функції include()у шаблонізаторі main.php. Для цього необхідно створити новий php файл, і зберегти його під ім'ям наприклад setings.php у папці php. Повний шлях до файлу буде D:/Mysitephp/php/setings.php, а його вміст наведено нижче.

    # папка з html документами
    $doctemplates = "templates";
    # повний шлях до директорії скрипту
    $turl="http://mysitephp.ru";
    база з даними
    $rubric1_menu = "data/rubric1.dat";
    ?>

    Як працює php скрипт формування меню? Спочатку змінну $menu за допомогою функції file()міститься вміст текстового файлу rubric1.dat. Потім функція count()підраховує кількість рядків у текстовому файліта функціями list()і explode()у циклі розгортається саме меню, де методом склеювання рядків (операція точка . ) формуються сторіччя посилань з їх назвами і титлами, яке потім поміщається в змінну $rubric1. Далі скрипт шаблонізатора, куди скрипт меню підключено функцією include(), переміщує вміст змінної $rubric1 у потрібне місце сайту за допомогою вже описаної раніше функції repl ().

    Таке меню поки працювати не буде, оскільки в ньому є тільки самі посилання з усіма необхідними атрибутами, але ні, скрипта, який би забезпечив перехід за цими посиланнями та відкриття сторінок сайту, які відповідатимуть цим посиланням. Цим php скриптом ми займемося далі.

    Далі можна проект оновлений скриптом формування меню. Завантажити оновлений проект можна також на сторінці, яка відкриється після оформлення та активізації безкоштовної передплати на панелі праворуч. Адреса сторінки потрібно зберегти. Саме на цій сторінці надалі з'являтимуться посилання на завантаження оновлень проекту, різноманітних корисних скриптів, програм, уроків та відеоуроків із схемотехніки, програмування та сайтобудування. для новаків.

    Завантажений оновлений новими скриптами проект php сайту тепер можна порівняти з тим, що вийшло в результаті описаних вище дій. Далі, щоб виключити різночитання, корисно буде повністю замінити проект на завантажений, виконати операцію, запустити сервер Denwer, набрати у вікні браузера mysitephp.ru і переглянути, що з цього вийшло. У лівій верхній частині шаблону має розгорнутися меню першого розділу, як показано нижче.

    Перейти та розтанути у своїй улюбленій соціалці

    Жоден сайт не обходиться без навігації або як ще називають "меню сайту". Так ось меню сайту буває однорівневим та багаторівневим у вигляді дерева. Якщо з однорівневим меню особливих складнощів у плані реалізації немає, то при створенні багаторівневого меню потрібно добре подумати.

    Найголовніше у цій задачі це спроектувати базу даних для нашого багаторівневого меню. Створимо таблицю Categories із трьома полями id, title, parentде:

    • ID- ідентифікатор
    • Title- Назва меню
    • Parent- Батько категорії за замовчуванням 0

    За розгалуження меню відповідає поле Parentякщо Parent = 0, то ця категорія є батьківською. Для того щоб додати нащадків до батьківської категорії, потрібно в полі parent вказати IDпотрібного батька. Наприклад:

    Таблиці з категоріями

    Як видно з таблиці, у батьківської категорії Автомобіліє два нащадки - це Маздаі Хондапов'язаних по полю Parent. А у категорії Мотоциклидва нащадки - це Кавасакіі Харлей. При цьому категорія Човна не має нащадків. Сподіваюся, що Ви зрозуміли, як зв'язати категорії.

    Далі переходимо від слів до практики. Створимо таблицю категорії.

    CREATE TABLE IF NOT EXISTS `categories` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20; -- -- Дамп даних таблиці `categories` -- INSERT INTO `categories` (`id`, `title`, `parent`) VALUES (1, "Автомобілі", 0), (2, "Мотоцикли", 0) , (3, "Мазда", 1), (4, "Хонда", 1), (5, "Кавасакі", 2), (6, "Харлей", 2), (7, "Мазда 3", 3 ), (8, "Мазда 6", 3), (9, "Седан", 7), (10, "Хечбек", 7), (11, "Човни", 0), (12, "Ліфтбек", 8), (13, "Кросовер", 8), (14, "Білий", 13), (15, "Червоний", 13), (16, "Чорний", 13), (17, "Зелений", 13), (18, "Мазда CX", 3), (19, "Мазда MX", 3);

    Алгоритм роботи складається з наступного:

    Створюємо з'єднання з базою даних

    query("SET NAMES "utf8""); /* * Це "офіційний" об'єктно-орієнтований спосіб зробити це * проте $connect_error не працював аж до версій PHP 5.2.9 та 5.3.0. */ if ($mysqli->connect_error) ( die("Помилка підключення (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Якщо потрібно бути впевненим у сумісності з версіями до 5.2 .9, * краще використовувати такий код */ if (mysqli_connect_error()) ( die("Помилка підключення (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

    Пишемо функцію отримання даних із таблиці Categories

    //Отримуємо масив нашого меню з БД у вигляді масиву function getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Створюємо масив де ключ масиву є ID меню $cat = array();

    Отримуємо масив такого виду, де ключ масиву це ID категорії.

    Функція побудови дерева із масиву від Tommy Lacroix

    //Функція побудови дерева з масиву від Tommy Lacroix function getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Якщо немає вкладень if (!$node[" parent"])( $tree[$id] = &$node; )else( //Якщо є нащадки то перебираємо масив $dataset[$node["parent"]]["childs"][$id] = &$ node;)) return $tree;)

    Отримуємо масив у вигляді дерева

    Скрипт цілком

    query("SET NAMES "utf8""); /* * Це "офіційний" об'єктно-орієнтований спосіб зробити це * проте $connect_error не працював аж до версій PHP 5.2.9 та 5.3.0. */ if ($mysqli->connect_error) ( die("Помилка підключення (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Якщо потрібно бути впевненим у сумісності з версіями до 5.2 .9, * краще використовувати такий код */ if (mysqli_connect_error()) ( die("Помилка підключення (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Отримуємо масив нашого меню з БД у вигляді масиву function getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Створюємо масив де ключ масиву є ID меню $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; ) //Функція побудови дерева з масиву від Tommy Lacroix function getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Якщо немає вкладень if (!$node["parent"])( $tree[$id] = &$node; )else( //Якщо є нащадки то перебираємо масив $dataset[$node["parent"]]["childs"][$id] = &$node; ) ) return $tree; ) //Отримуємо підготовлені й масив із даними $cat = getCat($mysqli); //Створюємо деревоподібне меню $tree = getTree($cat); //Шаблон для виведення меню у вигляді дерева function tplMenu($category)( $menu = "
  • ". $category["title"].""; if(isset($category["childs"]))( $menu .= "
      ". showCat($category["childs"]) ."
    "; ) $menu .= "
  • "; return $menu; ) /** * Рекурсивно зчитуємо наш шаблон **/ function showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string; ) //Отримуємо HTML розмітку $cat_menu = showCat($tree); //Виводимо на екран echo "
      ". $cat_menu ."
    "; ?>

    Результат праці

    Багаторівневе меню на PHP + MySQL для адмінки

    Якщо Ви хочете використовувати дане меню в адмінці свого сайту, потрібно переписати пару функцій tplMenu(), showCat().

    ".$category["title"].""; )else( $menu = " "; ) if(isset($category["childs"]))( $i = 1; for($j = 0; $j< $i; $j++){ $str .= "→"; } $i++; $menu .= showCat($category["childs"], $str); } return $menu; } /** * Рекурсивно считываем наш шаблон **/ function showCat($data, $str){ $string = ""; $str = $str; foreach($data as $item){ $string .= tplMenu($item, $str); } return $string; } //Получаем HTML разметку $cat_menu = showCat($tree, ""); //Выводим на экран echo ""; ?>

    Результат праці

    Вибери Автомобілі → Mazda →→ Mazda 3 →→→ Sedan →→→ Хечбек →→ Mazda 6 →→→ Ліфтбек →→→ Кросовер →→→→ Білий →→→→ Червоний →→→→ Чорний →→→→ Зелений →→ Мазда CX →→ Мазда MX → Хонда Мотоцикли → Кавасакі → Харлей Човни

    Оскільки вона розкриває зміст модуля menu.php. Нижче буде представлено власну розробку меню на PHP, яка була написана з нуля в блокноті.

    Цей код особливо корисний для динамічних сайтів, які мають самописні движки. Я запропоную два варіанти коду, які мають незначні відмінності (у чому різниця буде пояснена після).

    Для початку наведу зразкову структуру сайту, для якого підійде це меню. Структура сайту повинна мати такий вигляд ( класичний вигляд):

    /index.html /razdel_1/ /razdel_1/articles_1.html /razdel_1/articles_2.html ... /razdel_2/ /razdel_2/articles_1.html /razdel_2/articles_2.html ... ... ... /razdel_N/articles_2 .html

    Сайт може містити розділи ще й підрозділи:

    /razdel_1/podzaderl_1/ /razdel_1/podzaderl_1/articles_1.html /razdel_1/podzaderl_1/articles_2.html ... /razdel_1/podzaderl_2/articles_1.html /razdel_1/podzaderl_2/articles_2.html

    Така структура також працюватиме для нашого меню лише з невеликими відмінностями.

    Я пропоную створити окремий файл для меню на PHP. Наприклад, menu.php було б чудовою назвою для такого файлика. Для реалізації меню також представлений стиль меню CSS, щоб відразу зробити його більш менш красивим. Природно, цей стиль дається тільки для ознайомлення, оскільки дизайни у ​​сайтів дуже різні.

    Код для стилю меню CSS:

    .menu ( height:42px; padding:0 0 0 16px; background:url(images/spacer.png) repeat; ) .menu li ( display:block; float:left; ) .menu li.active ( background: #000011 ; ) .menu a ( color:#FFF; display:block; line-height:42px; text-decoration:none; ;)

    Тепер, давайте розглянемо перший варіант реалізації меню на PHP, який є трохи спрощеним.

    Перший варіант коду меню на PHP

    \n"; for ($i=0;$i ": "
  • "; echo" ".$array_menu[$i]["name"]."
  • \n"; ) echo ""; ?>

    Меню можна поділити на дві частини. Перша містить інформаційний масив $array_menu, до якого заносяться назви наших розділів із посиланнями на розділи. Є варіант забити ці дані до бази даних mySQLАле особливо сенсу в цьому немає, оскільки вибірка зовсім невелика, тому на швидкість роботи це ніяк не вплине.

    Друга частина містить виведення меню через цикл for. У циклі відбувається порівняння адреси сайту з адресою з масиву $array_menu. Якщо є збіг, то виводимо черговий розділ меню зі спеціальним класом active:

  • , інакше просто
  • . Це дозволяє нам виділити якимось кольором ту частину меню, де знаходиться користувач. На мій погляд, це необхідна річ для будь-якого сайту, щоб користувач міг розуміти, в якому розділі він знаходиться.

    Порядок прямування в масиві буде зберігатися при виведенні меню на сайті. Тобто масив треба заповнювати у порядку, в якому потрібно виводити меню.

    Примітка:
    Якщо URL (адреса) заголовком розділів мають вигляд:
    /razdel_1
    або такий
    /razdel_1/nazvanie_razdela.html
    то в array_menu потрібно записувати точний збіг:
    $array_menu[$i]["url"]="/razdel_1"
    або для другого випадку:
    $array_menu[$i]["url"]="/razdel_1/nazvanie_razdela.html";

    Як працює перший варіант меню?
    Він підсвічує меню лише, якщо Ви знаходитесь за адресою розділу. Наприклад, якщо адреса сторінки буде /razdel_1/articles_1.html, то меню ніяк не підсвічуватиметься.

    Другий варіант коду є модифікованим варіантом першого та передбачає можливість підсвічування меню навіть у статтях, які знаходяться у розділах.

    Другий варіант коду меню на PHP

    "; for ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • ";)) echo""; ?>

    У цій статті я покажу, як можна створювати багаторівневе меню на PHP та MySQL. Безумовно, варіантів його створення можна вигадати багато, але, судячи з кількості Ваших питань на цю тему, Вам потрібен приклад. І його я наведу у цій статті. Відразу зазначу, що ця стаття має сенс лише для тих, хто знає PHPі вміє працювати з MySQL. Всім іншим спочатку треба пройти цей , або прочитати якісь книги по PHP та MySQL.

    Для початку створимо таблицю у базі даних із наступними полями:

    • id- Унікальний ідентифікатор.
    • title- анкор посилання у меню.
    • link- адреса, на яку вестиме пункт меню.
    • parent_id- Батьківський ID. Якщо батьківського пункту немає, тут буде NULL (або можна ще 0 поставити).

    З таблицею розібралися, тепер настав час PHP-код. Повний PHP-коднаведений нижче:

    $mysqli = new mysqli("localhost", "root", "", "db"); // Підключаємось до БД
    $result_set = $mysqli->query("SELECT * FROM `menu`"); // Робимо вибірку всіх записів з таблиці з меню
    $items = array(); // Масив для пунктів меню
    while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Заповнюємо масив вибіркою з БД
    $childrens = array(); // Масив для відповідностей дочірніх елементів їх батьківським
    foreach ($items as $item) (
    if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Заповнюємо масив
    }
    function printItem($item, $items, $childrens) (
    /* Виводимо пункт меню */
    echo "

  • ";
    echo "".$item["title"]."";
    $ul = false; // Чи виводилися дочірні елементи?
    while (true) (
    /* Нескінченний цикл, у якому ми шукаємо всі дочірні елементи */
    $key = array_search($item["id"], $childrens); // Шукаємо дочірній елемент
    if (!$key) (
    /* Дочірніх елементів не знайдено */
    if ($ul) echo "// Якщо виводилися дочірні елементи, то закриваємо список
    break; // Виходимо із циклу
    }
    unset($childrens[$key]); // Видаляємо знайдений елемент (щоб він не виводився ще раз)
    if (!$ul) (
    echo "
      // Починаємо внутрішній список, якщо дочірніх елементів ще не було
      $ ul = true; // Встановлюємо прапор
      }
      echo printItem($items[$key], $items, $childrens); // Рекурсивно виводимо всі дочірні елементи
      }
      echo "";
      }
      ?>

      Цей код повністю робочий, однак, Ви повинні розуміти, що так ніхто не пише (зокрема, висновок через echo HTML-тегів). І Ваше завдання взяти алгоритм із цього коду, але не сам код. А далі цей алгоритм підключити до свого двигуна. Я постарався ретельно прокоментувати код виводу багаторівневого меню на PHP та MySQLАле, безумовно, він не найпрозоріший і вимагає вже непоганих початкових знань. Якщо Ви ще погано знаєте PHP та MySQL, то спочатку рекомендую пройти цей

  • © 2022 androidas.ru - Все про Android