Как вывести зависимые списки по выбранной категории?

Тема в разделе "Базы данных", создана пользователем danneo, 27 мар 2018.

Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.475
    Симпатии:
    114
    Есть таблица категорий, связка через parentid. Например, пользователь выбрал id категории и эти данные сохраняются в url, откуда и берутся переменные для запроса (выборки из БД).
    В итоге имеем: что нужно вывести структуру последовательных выпадающих списков, в конце которых список с id, который выбрал пользователь (id из url, в общем).
    Выбирать все категории и строить на php пробегая рекурсией - не вариант, т.к. данных много, получается большая нагрузка (при сохранении в память большого массива), от и этого хочу уйти.
    Списки примерно так выглядеть должны: главные разделы с выбранным разделом (selected="selected"), далее еще список, где подразделы из выбранного главного раздела и т.д.
     
  2. dimonnot

    dimonnot Писатель

    Регистр.:
    12 мар 2018
    Сообщения:
    4
    Симпатии:
    0
    Получается у вас есть выбранная категория и нужно выбрать всех её родителей до главных категорий, список главных категорий и на уровне каждого родителя ещё все его дочерние узлы?
     
  3. dimonnot

    dimonnot Писатель

    Регистр.:
    12 мар 2018
    Сообщения:
    4
    Симпатии:
    0
    На базе данных будет нехилый рекурсивный запрос, который будет очень прилично тормозить. какая СУБД?
     
  4. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.475
    Симпатии:
    114
    MySQL
     
  5. pautina

    pautina Постоялец

    Регистр.:
    15 фев 2010
    Сообщения:
    58
    Симпатии:
    16
    Не до конца понимаю, что вам нужно сделать. Напишите в виде текста конечный результат, который вам нужно, а также структуру таблиц с которых нужно сделать выборку. И напишите то, что у вас уже есть: SQL - запрос и PHP-код. Может получится оптимизировать. Согласно того, что вы написали - без пары массивов не обойтись, но думаю это будет быстрее рекурсии на php.
     
  6. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.475
    Симпатии:
    114
    Есть категории, вложенные. В блоке фильтров например, из url берется id подкатегории. При переходе по этому адресу (где есть id подкатегории) необходимо в блоке фильтров вывести дерево списков (зависимых) с уже выбранными значениями. Т.е. Главная категория ->подкатегория->подподкатегория и т.д.
    Не могу сообразить, как сделать выборку и вывести потом все это дело на php
     
  7. pautina

    pautina Постоялец

    Регистр.:
    15 фев 2010
    Сообщения:
    58
    Симпатии:
    16
    Теория понятно.
    Могу только подсказать, что нужно использовать RIGHT или LEFT join. Но может получится очень рекурсивный запрос. Без вида на вашу структуру таблиц, составить конкретный запрос и протестировать его невозможно.