@TopClans

Как организовать логику для построения запроса в БД по полученным в GET данным?

Делаю каталог товаров для магазина. Решил сразу настроить ЧПУ (а точнее - Яндексу Понятный Урл и Гуглу понятный УРЛ, человеки-то на УРЛ вряд ли будут смотреть).
Определил такую структуру:
/toyota/
/toyota/rav4
/toyota/rav4/body
/toyota/rav4/body/front-bumper
/toyota/rav4/body/front-bumper/SKU
Пока не получен SKU (артикул детали), скрипт будет показывать подкатегории

С помощью mod_rewrite такой URL будет передаваться серверу как catalog.php?make=toyota&model=rav&category=body&subcategory=front_bumper&sku=SKU
Проблема в том, что значения CATEGORY и SUBCATEGORY не будут уникальными. Соответственно, искать в БД по этому параметру я не могу.
Я придумал такой вариант:
if (есть SKU)
выводим товар
if (есть SUBCATEGORY)
нужно вывести список товаров.
для этого нужно найти все товары с нужным ID категории, а для этого нужно найти все записи в таблице категорий с параметрами SUBCATEGORY и MODEL, т.е. исходить из того что в пределах одной модели (RAV4, например) все подкатегории товаров будут уникальными, не будет двух категорий "front_bumper".
if (есть CATEGORY)
//выводим список подкатегорий, по такой же логике - в пределах модели RAV4 все названия категорий товаров уникальные, не будет двух категорий "engine".
if (есть MODEL)
// тут уже всё просто, все модели у меня уникальные, поэтому просто ищем ID категории с этой моделью, и потом выводим список подкатегорий, у которых родитель - ID модели.

Но тут появляется ограничение на количество вложенных категорий, вдруг я захочу сделать ещё одну категорию? Чтобы было /toyota/rav4/body/front/bront_bumper/.

Может есть какое-то изящное и популярное решение?
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 2
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
Сделайте toyota/rav4/body_12/front_41/...

Где 12 и 41 id категории и подкатегории. Обратите внимание на url материалов на хабре, например. Так часто делают.
Ответ написан
Комментировать
unitby
@unitby
Как вариант:
Отказаться от понятия subcategory. Оставить лишь понятие категории у которого может быть родительская категория (все в одно таблице, если нет родителя, то parent_id = 0, иерархия может быть сколь угодно длинная, обычное дерево получиться)
У товара будет привязка к моделе и категории. Но я бы сделал их не напрямую а через отдельные таблицы. Это чтобы не плодить категории, да и одна и та же запчасть может быть к нескольким моделям
В разборе УРЛ первые два поля производитель модель, последнее SKU. Если полей больше 2 и последнее не SKU значит оно категория. Остальное игнорить
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы