В который раз пытаюсь правильно понять и нашел как раз то, что мне надо воспроизвести:
http://www.rutector.ru/price/index.shtml
Буду рад, если кто прочтет и попытается помочь.
Расскажу как я это вижу, а вы меня поправьте где я ошибся.
1. Таблица, например
catalog_menu: id, имя, описание, url
Например запись вида: 1,Сварочное оборудование, описание, url=welding
2. Таблица основная, большущая
category: category_id, url, parent_id, name, описание
Например запись вида: 135, welding, 0, Сварочные агрегаты, описание
Например запись вида: 1344, welding, 135, Сварочные агрегаты 150-200А, описание
3. Таблица, тоже огромная например:
product: product_id, category_id, другие характеристики продукта
Как я вижу цепочку запросов из базы:
1. уровень (
http://www.rutector.ru/price/index.shtml):
SELECT FROM catalog_menu
Пошел цикл. При выводе списка формируются ссылки вида <a href=..?welding></a>
В подцикле делаем построение подменю (потомков):
SELECT FROM category WHERE url='welding' AND parent_id = 0;
Вроде основное меню построено.
2. При клике на заголовок меню (
http://www.rutector.ru/price/welding/index.shtml)
Делаем проверку на потомков, если есть выводим подсписок, если родитель то оформляем его как заголовок.
SELECT FROM category WHERE url='welding' AND parent_id=0
получаем массив row[category_id], далее подцикл проверки потомков:
SELECT FROM category WHERE parent_id = row[category_id]
2.1. Вот тут совсем мне понятно. При клике на родителя (например:
http://www.rutector.ru/price/welding/index.shtml?category_id=136)
вываливается список продукции в виде таблиц разбитых по категориям. Во первых, я так понимаю все таки в таблице category получается 2 поля parent_id? Т.е вот еще один потомок
http://www.rutector.ru/price/welding/index.shtml?category_id=1205. Как то его тоже надо учитывать, и во вторых мне не понятно как строятся таблицы, ведь у каждой категории свои поля, характеристики.
Точно также не понятна структура таблицы product. Там у многих изделий совсем разные характеристики, т.е у кого то есть характеристика Сила тока, а у кого то есть Макс. поднимаемый вес. У меня одна только догадка что сделано куча полей и только нужные из них заполняются, но это как то совсем не эффективно, или для последних потомков там свои таблицы? Вобщем помогите понять, как же все таки такие каталоги делаются!