Интернет магазин. Хранение корзины товаров.

Статус
В этой теме нельзя размещать новые ответы.

arhat78

Новичок
arhat78, т.е. у тебя у всех товаров должен быть size? А если это две кофты? У них отличается еще и цвет.
Есть такой (анти)паттерн EAV. Или используй документоориентированные средства СУБД, но не везде они есть (в MySQL нет)
Absinthe, у меня по теории должны быть ботинки, у каждого, конечно, несколько размеров. Пока задача выводить несколько выбранных размеров одного ботинка в корзине... И у меня MySql.
 

hell0w0rd

Продвинутый новичок
keltanas, что значит как их хранить? таблица properties, properties_values... many-to-one, many-to-many.
Как эффективно сравнивать - это другой вопрос, как он относится к корзине? Корзина - это товар и его кол-во.
 

keltanas

marty cats
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), если товар уже есть
потом сохранить массив обратно в сессию

подход не лишен изъянов, но если ты его освоишь, будешь уже оптимизировать по необходимости.

Это ответ на твой изначальный вопрос. Надеюсь с составлением формы для отправки данных на нужный скрипт вопросов нет?
 

hell0w0rd

Продвинутый новичок
keltanas, я не понимаю зачем это нужно. Зачем всегда хранить набор ключей, пусть даже хеш от них, чем просто id. Я понимаю зачем это нужно при поиске товара, или выборе размера, но когда мы положили в корзину - мы положили определенный товар. Нам плевать на характеристики, нам важна цена и количество - все.
 

keltanas

marty cats
hell0w0rd,
добавляю в корзину ботинок Арт.10001 размер 20, в корзине выводится этот ботинок с размером 20; затем добавляю этот же ботинок, но с размером 24 - а в корзине уже выводится этот последний ввод с размером 24.
тебя не смущает, что товар с разным цветом или размером может идти под одним и тем же артикулом (product_id)?
 

keltanas

marty cats
AnrDaemon, хочешь сказать, он про корзину в супермаркете говорит?))
Хорошо.
hell0w0rd, идешь ты по супермаркету и видишь попугаев. Все попугаи разного цвета и размера, но с одним и тем же штрих-кодом.
Ты хочешь купить 3 попугая. 2 красных и одного зеленого.
Тебе важен цвет попугаев? Да. Поэтому ты кладешь в корзину именно 2 попугая, у которых св-во цвет = красный, и 1 попугай, у которого св-во цвет = зеленый.
Но, поскольку на кассе тебе надо как-то идентифицировать артикул чтобы кассир мог узнать цену, ты кладешь попугаев вместе со штрих-кодом.
Тебе же не захочется положить в корзину 2 красных попугая, а когда положишь зеленого, все 3 станут зелеными? Как такое вообще возможно?
 

WMix

герр M:)ller
Партнер клуба
все зависит от изначальной модели, слово товар никак не дает понять проблему. вагон товара тоже товар.
когда я слышу sku я четко понимаю что для 2х размеров этот номер разный, product_id лично мне не говорит ни о чем кроме индификатора записи в базе данных. EAV не решение, трусы красного цвета бывают в размерах XXL и S а синего только S (аттрибуты зависимы). я писал бы на каждый SKU запись, и организовывал бы дерево этих записей, но продукт всего одна запись. к ней привязано описание, возможно даже на разных языках, фотографии, отзывы и тд.
 

keltanas

marty cats
WMix, бывает и такое, что даже SKU может быть одинаковым у товаров с разным цветом. Вот так, и поставщикам, и складу, и бухгалтерии, и маркетологам наплевать, что товар отличается цветом. А он отличается и покупателю важно, получить именно тот цвет, который он выбрал.
 

keltanas

marty cats
WMix, ну это идеальный случай ))
Я пробовал мутить инет-магазин. Пока составишь базу SKU, скорее с голоду помрешь.
 

AnrDaemon

Продвинутый новичок
Это не идеальный случай - это ОПРЕДЕЛЕНИЕ ТЕРМИНА.
(Пятая страница бреда /start)
 

keltanas

marty cats
WMix, так мой пример практически тоже самое реализует. Единственный недостаток генерации "на лету" в том, что нельзя вести учет наличия на складе товаров с конкретными свойствами.

Но, могу точно сказать, что многие (за исключением крупнейших онлайн-ритейлеров) не держат весь указанный товар на складе (это подтверждают мое общение с владельцами инет-магазинов, а также попытки заказать товар у некоторых крупных магазинов, при том, то на сайте товар отмечен, как "на складе"). Их бизнес-процессы не рассчитаны на это. Более того, даже поставщики не могут сказать за наличие у них конкретного SKU. Приходилось самим к ним ехать и искать, есть ли товар нужного цвета? Поэтому мой способ для очень многих будет подходящим.
При желании расшифровать p126.s5 можно запросто. Вопрос только в том, что нужно будет держать шаблон для шифровки/расшифровки для каждой группы товаров.
Ну или шифровать в виде id126p1v2p67v89

PS: А за пример спасибо ))
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
keltanas, так вот как раз штрихкод - это и есть id. Просто id уже готовой сборки "товара", которая хранится в базе. У этой сборки есть конечное количество.
 

WMix

герр M:)ller
Партнер клуба
hell0w0rd, нет, штрихкод это ean. для двух футболок разного цвета или размера он вероятнее всего будет одинаковым.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
У нас в офисе есть разноцветные блокноты одной фирмы и у них одинаковый и артикул, и штрихкод :)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху