За последние 24 часа нас посетили 20348 программистов и 1089 роботов. Сейчас ищет 821 программист ...

Подскажите пожалуйста как лучше реализовать меню

Тема в разделе "PHP для новичков", создана пользователем pniponi, 7 дек 2016.

Метки:
  1. pniponi

    pniponi Новичок

    С нами с:
    7 дек 2016
    Сообщения:
    1
    Симпатии:
    0
    Дисклеймер
    Всем привет, ниже много текста. Прошу помочь, придумать, как реализовать более грамотно меню на сайте. WARNING! Да это говнокод. Ибо я только учусь.
    ----------------------
    Пишу для фана(просто так) сайт (дабы скилл поднимать).
    Само меню, состоит из чекбоксов и лэйблов. Это аккардион меню, принцип в том, что при нажатии на чек бокс, он становится чеккед и если он чеккед, то появляются лэйблы. Ну вы поняли. (чеккед-развернулось меню, анчеккд-свернулось)

    вот фрагмент кода меню:


    HTML:
    1. <li class="has-children">
    2.                 <input type="checkbox" name ="group-2" id="group-2">
    3.                 <label for="group-2">Верхний пункт меню</label>    <!--USER -->
    4.     <ul>
    5.                     <li class="has-children">
    6.                         <input type="checkbox" name ="sub-group-2" id="sub-group-2">
    7.                         <label for="sub-group-2">ЛОЫ <br> И КЕКИ </label>
    8.  
    9.                         <ul>
    10.                             <li><a href="reqsoft.php?per=group-2&per2=sub-group-2">Первый пункт меню</a></li>
    11.                          
    12.                         </ul>
    13.                     </li>
    Для чего в ссылке параметры ? дело в том, что все, грузится модульно, т.е. меню вов се файлы с одного файла (include_once) поэтому для отслеживания, какой пункт меню подсвечивать, вместе со ссылкой передаются параметры, которые парсятся jQuery вытаскиваются из URL присваиваются к переменным и затем через JQ меняют css свойства нужного чекбокса на чеккед (у каждого чекбокса есть id но! внутри чекбокса, есть еще чекбокс) вообщем что с ссылкой пришло, то и отмечается, как чеккед, т.е. меню разворачивается на нужном пункте (в листинге часть кода одного эллемента)
    вот так реализован механизм отслеживания перемещения по меню(чуть позже ясно будет зачем я это описал)

    по легенде, пользователь переходит на сайт с левого ресурса, на котором есть 3 ссылки которые отбражаются в сответсвии с тем, кто юзер: админ, пользователь или ктулху

    для каждого из них свой контент и свое меню
    как это работает:
    пользователь на ресурсе N щелкает по ссылке для например пользователя:
    вместе со ссылкой летят параметры:


    HTML:
    1.  
    2.      <a href="http://isuo-db:88/select.php?lvl=l1"> LVL 1</a> </br></br>
    3.       <a href="http://isuo-db:88/select.php?lvl=l2">  LVL 2</a>  </br></br>
    4.       <a href="http://isuo-db:88/select.php?lvl=l3"> LVL 3</a>  </br></br>
    далее на сайти они вытаскаваются из массива GET, и идут в сессию:
    PHP:
    1. $level = $_GET['lvl'];
    2. $_SESSION['levelacc'] = $level;
    затем проверяется, что это там к нам в URL пришло и что с этим делать:

    PHP:
    1.     switch ($level) {
    2.     case "l1":
    3.        include 'modules\modlvl\l1.php';
    4.         break;
    5.     case "l2":
    6.       include 'modules\modlvl\l2.php';
    7.         break;
    8.     case "l3":
    9.       include 'modules\modlvl\l3.php';
    10.         break;
    т.е. от типа пользователя подгружается нужный файл с нужным меню

    сам файл который грузить меню на все страницы называется modul_menu.php
    т.к. сведения о уровне пользователя хранятся в сессии, каждый раз, при входе на какую-либо страницу, идт проверка доступа и что показывать пользователю:


    PHP:
    1.      $dostup=$_SESSION['levelacc'];
    2.  
    3.  
    4.     switch ($dostup) {
    5.     case "l1":
    6.        include 'modules\modlvl\l1.php';
    7.         break;
    8.     case "l2":
    9.       include 'modules\modlvl\l2.php';
    10.         break;
    11.     case "l3":
    12.       include 'modules\modlvl\l3.php';
    13.         break;
    Вот так работает меню.
    Сейчас я начал делать админку. Все вроде хорошо сделал:
    При создании страницы, из полей для имени страницы, содержимого и тд все летит в БД. Параллельно создается *.php файл с именем указным пользователем, шаблон (стили, разметка берется со специального файла) и затем в него все добавляется с БД ориентируясь на ячейку с именем файла. Вообщем реализация добавления страницы работает. Не суть.
    Дело в другом, как мне лучше сделать редактор меню ? Что-бы можно было добавлять/изменять/удалять пункты.
    Как Вы уже поняли, на каждый пункт меню необходима ссылка с параметрами, каждый под пункт меню должен быть с определенным id.
    Например:
    HTML:
    1.  
    2.     href="reqsoft.php?per=group-2&per2=sub-group-2
    ссылка говорит о том, что нужно отметить как чеккед: чекбокс с id group2 и второй чекбокс (вложеный) с id sub sub-group-2


    Как лучше это все реализовать? Конечно лучше хранить все это в БД, что бы в цикле выводить и грузить. Добавить все эти id можно с помощью jQuery но как дать понять скрипту каой именно id нужно добавить ? или если хранить в БД как именно хранить ? Вообщем я окончательно запутался буду рад если поможите

    Конечно это все ужасно выглядит, но я только учусь. 4 день изучаю php
    и да я школота, если кому-то это интересно