Логика приложения такова select * from model; и генерим с результата список ссылок с адресами в конце которых тот самый path.
Юзер нажимает на ссылку. Сервер получает запрос, контроллер видит что фрагмент адреса, там где может быть path - имеется. Значит загружается модель продукта - не модель ботинка, тут просто совпадение слов, - модель из сокращения MVC, то есть скрипт который готовит данные для рендера продуктовой страницы. Этот скрипт должен показать наименование и список размеров. Наименование есть в модели, значит можно тупо сделать 2 запроса,
1: select * from model where path = $escaped_quoted_path;
что дает всю инфу по модели, в том числе ее id. И тогда второй -
2. select prods.id, size.value from prods left join size on prods.size_id = size.id where prods.model_id = $res['id']
- загрузит список имеющихся размеров выбранной модели. Улавливаете? Список загружается в "формате" id продукта - размер.
Когда юзер выбрал размер и нажал кнопку Купить, в корзину валится пара id продукта и количество. То есть все как обычно, ибо по-другому и быть не должно.
После оформления юзер отправляет на сервер эти самые данные - ид продукта и количество. Какие теперь проблемы узнать что он заказал и какого размера?
Никаких. Вот так мы узнаем по id все что нужно знать:
http://sqlfiddle.com/#!9/2a49f/2
В тот же самом запросе на полный фарш меняем where на where p.id=4
Жизненный цикл завершен.