Путь хранится в бд, как сделать выборку

regi

Новичок
Путь хранится в бд, как сделать выборку

Есть две таблицы.
Одна: cat(cid,cleft,cright,clevel) - на алг нестед сетс
Вторая:cat_info(cid,ctitle,cpath) - cpath хранит название раздела, которое используется, ессно, в чпу: типа /razdel/razdel2/razdel3.

Допустим, таблица cat_info забита таким образом:
ctitle, cpath, cat.clevel
Вентиляция ventilation 1
Статьи articles (вентиляция - родитель) 2
Оборудование equipment (вентиляция - родитель) 2
Пылеудаление dust 1
Статьи articles (Пылеудаление - родитель) 2
Оборудование equipment(Пылеудаление - родитель) 2

я думаю вопрос уже должен быть понятен. Как при хранении в базе НЕ полного пути, делать выборку нужного раздела в случае наличия на одном уровне разделов с одинаковым cpath?

Раньше хранил в бд полный путь, типа /ventilation/articles. На форуме, не помню точно темы, посоветовали хранить лишь синоним названия для чпу в бд. Я и не подумал о проблемах в случае одинаковых cpath на одном уровне при разных родителях. Выбирал запросом where cat_info.cpath=$cpath and cat.clevel=$clevel, пока не добавил для другого подраздела разделы с таким же cpath ^)

-~{}~ 05.04.06 21:56:

Я в принципе понимаю, как сделать:
1. Делаем запрос where cat_info.cpath=articles and cat.clevel=4
2. Если mysql_num_rows($result) > 1 то из исходного массива(который получается из строки запроса) берем родительский элемент(если была строка /catalog/other/ventilation/articles/, то берем ventilation аррай попом) и опять делаем такой же запрос - cat_info.cpath=$cpath and cat.clevel=$clevel. если опять num_rows > 1 повторяем, ну, получается рекурсия :)

Но ведь получается легче хранить полный путь в бд и выбирать сразу и без проблем(Только админка усложнится, так как переименование пути родительской категории будет применяться ко всем детям). может отказаться от этой затеи и вернуться к хранению полного пути :)
 

zerkms

TDD infected
Команда форума
regi
это у тебя такое своеобразное дерево в cat_info что ли?
 

regi

Новичок
в cat_info нет дерева, там хранится путь для чпу и просто всякие настройки разделов. дерево в cat на nested sets. связывается с cat_info по cid.
 

zerkms

TDD infected
Команда форума
ctitle, cpath, cat.clevel
Вентиляция ventilation 1
Статьи articles (вентиляция - родитель) 2
Оборудование equipment (вентиляция - родитель) 2
Пылеудаление dust 1
Статьи articles (Пылеудаление - родитель) 2
Оборудование equipment(Пылеудаление - родитель) 2
мне это напоминает дерево. я не прав??
 

regi

Новичок
прав, я тебе отписал, что дерево хранится в таблице cat, а не cat_info
 
Сверху