arhat78, в общем буду капитаном
корзина - это по сути ассоциативный массив вида:
PHP:
<?php
$_SESSION['basket'] = [
'p126.s5' => ['product_id'=>126, 'properties'=>['size_id'=>5], 'qty' => 2],
'p126.s2' => ['product_id'=>126, 'properties'=>['size_id'=>2], 'qty' => 1],
];
где p126.s5 и p126.s2 - идентификаторы складских позиций, которые образуются из id товара в номенклатуре и цепочки выбранных свойств (в данном случае size = 5 и size = 2)
Как видишь, идентифицируется товар в корзине по совокупному ключу, поэтому один и тот же товар но разного размера будет разным товаром.
в общем скрипт, на который приходит запрос при нажатии кнопки должен проверить, если ли в сессии данный массив
если есть, то добавить в него новый товар (который пришел в запросе), или увеличить кол-во (qty), если товар уже есть
потом сохранить массив обратно в сессию
подход
не лишен изъянов, но если ты его освоишь, будешь уже оптимизировать по необходимости.
Это ответ на твой изначальный вопрос. Надеюсь с составлением формы для отправки данных на нужный скрипт вопросов нет?