Создание выпадающего меню для представления вложенных категорий - PullRequest
0 голосов
/ 28 марта 2011

У меня есть категория, и эта категория делится на подкатегории на уровне 5. Я хочу определить функцию, которая позволяет нам правильно обращаться к данным на всех уровнях категории.

 Full Texts     id  cat_id subcat_id    cat_name subcat_name status
Edit    Delete  1       0       0       food                2
Edit    Delete  2       1       0       indian              1
Edit    Delete  3       2       0       japanis             1
Edit    Delete  4       3       0       chaines             1
Edit    Delete  5       4       0       american            1
Edit    Delete  6       5       0       southex             1
Edit    Delete  7       1       2       indian      up      0
Edit    Delete  8       1       2       indian      delhi   0

Тамявляется едой одной корневой категории, которая содержит 5 категорий, которые содержат 5 подкатегорий. Я хочу создать функцию для этого, с помощью которой мы можем получить данные всех полей, как указано ниже:

  food

* indian
  japanis
  chaines 
  american 
  southex

 indian
   up
   delhi

ввыпадающий, пожалуйста, помогите мне .......

Ответы [ 2 ]

0 голосов
/ 28 марта 2011

Эта таблица не оптимальна ... У вас есть пара бесполезных столбцов. Вам просто нужно "id", "parent_id" и "name", чтобы сделать работу.

В столбце «parent_id» необходимо указать глобальный «id» для записи, которой принадлежит определенная строка, поскольку каждая запись, кроме ROOT, имеет своего родителя. Тогда вам не нужно беспокоиться о количестве подуровней.

Пример

[id] [parent_id] [name]
 1    0           food
 2    1           indian
 3    1           japanis
 4    1           chaines
 5    1           american
 6    1           southex
 7    2           up
 8    2           delphi

для фильтрации категорий уровня 1 используйте запрос "SELECT * FROM table_name WHERE parent_id = '1'", где id = 1 - идентификатор строки для категории "еда" (root). Таким же образом вы можете отфильтровать все остальные уровни, просто заменив это число - id = 2 на «индийский» и т. Д.

Чтобы динамически изменять выпадающие списки на вашей странице, вам нужен код JavaScript (предварительная загрузка значений; простой способ) или Ajax (обновление на лету; немного сложнее)

0 голосов
/ 28 марта 2011

Вам не нужна субкатода. Катид достаточно. Если вам нужно несколько слоев, просто добавьте парентид с парентидой первого уровня Катиды, установленной в -1 или 0 См. Таблицу EMP Oracle, в которой вы можете увидеть связь между EMPLOYEE и их МЕНЕДЖЕРОМ в одной таблице.

Вы должны узнать о нормализации базы данных - не знаете, почему вы используете cat_id / catname / subcatid / subcatname в той же таблице? Это огромная избыточность. (Есть случаи, когда это полезно, но я почти уверен, что не в вашем случае).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...