0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 336 Просмотров
*

Den JW

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
Добрый день!
Столкнулся с такой проблемкой...
Появилась необходимость создания большого количества пунктов меню, и, само собой, решил ее реализовать ч/з SQL запросы.
Но при добавлении пунктов послетали все привязки и сортировка. Проблемой явились поля lft rgt.  С самим явлением lft rgt разобрался, но появилось еще больше вопросов, т.к. добавляя один пункт, я должен менять сразу несколько других...
Если кто-то с подобным сталкивался, помогите разобраться. 
*

voland

  • Легенда
  • 11012
  • 585 / 112
  • Эта строка съедает место на вашем мониторе
*

pavelrer

  • Давно я тут
  • 603
  • 10 / 2
Re: Создание пункта меню через БД
« Ответ #2 : 18.03.2020, 20:43:01 »
Цитировать
С самим явлением lft rgt разобрался
точно!?
lft rgt - что за зверь поля?
Роберту СПС, до сих пор не могу осмыслить(Оправдание - Нет времени! :) )
! А ежли к вашему решению с lft rgt сверх компонент не дурной дабавим?
Прошу поделиться опытом с lft rgt! (+1 в lft и +1 в rgt от lft : - не решение!)
*

sivers

  • Завсегдатай
  • 1624
  • 226 / 0
Re: Создание пункта меню через БД
« Ответ #3 : 18.03.2020, 21:51:26 »
Прошу поделиться опытом с lft rgt! (+1 в lft и +1 в rgt от lft : - не решение!)
Это порядок сортировки в древовидных структурах. Разность между rgt и lft (между правым и левым) показывает сколько элементов внутри (т.е. сколько дочерних). Рассчитать их можно, если построить все дерево, а потом пробежаться по нему рекурсивно. А смысл их в том, что когда уже рассчитаны, то можно выстраивать отсортированные элементы без необходимости строить все дерево предварительно.
На связи в телеге @sivers
*

pavelrer

  • Давно я тут
  • 603
  • 10 / 2
Re: Создание пункта меню через БД
« Ответ #4 : 18.03.2020, 22:07:53 »
Цитировать
sivers
В чем фича перед оптимизированным! запросом в базУ!
По простому если можно :)
*

sivers

  • Завсегдатай
  • 1624
  • 226 / 0
Re: Создание пункта меню через БД
« Ответ #5 : 18.03.2020, 22:28:30 »
По простому если можно
Например, есть у вас большое древовидное меню (а то и несколько). Вы из параметров страницы получаете ИД текущего пункта меню. Допустим это 184. И вам надо вытащить из базы все дочерние подпункты (и их подпункты - у нас же дерево) этого вот пункта меню. Как это сделать?
Вы читаете сначала запись этого пункта из БД. Там есть parent_id. В принципе, этого отношения к родителю достаточно, чтоб построить все дерево меню и потом из него "выкусить" ваш пункт с его дочками. Но это же нерационально как-то. А в lft-rgt подходе достаточно выполнить запрос вида
Код
WHERE `lft` > $itemLft AND `rgt` < $itemRgt
где $ItemLft и $itemRgt - это lft и rgt вашего 184-го пункта меню соответственно.
На связи в телеге @sivers
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображается изображение пункта меню если выбран тип Разделитель

Автор Dolphin4ik_1

Ответов: 8
Просмотров: 196
Последний ответ 11.04.2021, 01:24:38
от v42bis
Ошибка редактированния меню

Автор web3.0

Ответов: 1
Просмотров: 119
Последний ответ 02.04.2021, 13:49:23
от coolplaymaster
Некорректно отображается меню мультиязычного сайта

Автор marat-209

Ответов: 2
Просмотров: 89
Последний ответ 31.03.2021, 12:33:25
от xpank
Создание сайта-аналога Ярмарки Мастеров

Автор sekundant11

Ответов: 5
Просмотров: 362
Последний ответ 25.03.2021, 06:55:27
от IToro82
Проблема с выпадающим меню в Protostar

Автор wws

Ответов: 0
Просмотров: 81
Последний ответ 13.03.2021, 18:57:09
от wws