Как создать корзину?

12
B
На сайте с 13.02.2008
Offline
262
#11
Leonid H:
как реализовать корзину, в которой у одного товара могут быть разные параметры с разными ценами, а так же товар без параметров с одной единственной ценой?

Надо смотреть, что за товары в магазине.

Leonid H:
--- ПРИМЕР ---
Плоскогубцы : 500 руб.
Шар : красный - 500 руб., синий - 1000 руб.
Джинсы : L - 1500 руб., XL - 2500 руб.

Если товары с артикулами реальные, как в вашем примере, то именно такие товары и надо создавать и класть в корзину. Но при этом надо нормализовать сущности, чтобы избежать избыточности.

Т.е. каждый товар должен описываться двумя сущностями:

1) Реальный товар, с присущими ему уникальными свойствами, включая артикул.

2) Представление товара, аккумулирующее в себя свойства общие для группы рельных товаров, отличающихся например только цветом и размером.

В корзину класть надо реальный товар.

Это наиболее понятная структура, т.к. является отражением реального склада.

Пример:

Есть представление товара: "Шар" с общим описанием.

И есть реальные товары с ним связанные:

Шар : красный - 500 руб

Шар : синий - 1000 руб

и т.д. - именно эти реальные шары кладутся в корзину.

Если атрибутов у товаров немного и типов товаров немного, то их лучше прямов типе (классе) товара прописать - это будет проще и работать будет быстрее.

Однако если типов товаров будет дохрена и атрибутов дохрена и количество атрибутов переменно и нужна будет фасетная фильтрация по параметрам (как в Я.маркете), то реализация такой системы - нетривиальная задача.

LH
На сайте с 26.09.2013
Offline
89
#12

Товаров не много, но цены разные:

----

Допустим палка 10 см синяя = 10 руб

Тогда как палка 15 см синяя = 15 руб, но так же есть и красный цвет = 20 руб.

И например палка 20 см синяя 18 руб, красная 25 руб, зеленая 33 руб.

---- ДЛЯ ЧИТАЕМОСТИ ----

(10см) - (синяя) = (10 руб)

(15см) - (синяя) = (15 руб), (красная) = (20 руб)

(20см) - (синяя) = (18 руб), (красная) = (25 руб), (зеленая) = (33 руб)

То есть назначить таблицу с заранее указанными атрибутами (цвет - цена) не получится, так как цена цвета ИНДИВИДУАЛЬНА для каждого товара.

B
На сайте с 13.02.2008
Offline
262
#13

Leonid H,

В чем проблема? Что у вас на складе реально лежит, то и создаете в БД и кладете в корзину, но на сайте на страничке карточки товара показываете не эти реальные товары, а их представление.

То есть:

У вас есть представление товара с названием "Палка". Делаете её общее описание: что у неё целых два конца, она деревянная и пр.

А также на этой странице в том или ином виде выводите реальные товары, которые можно положить в корзину: со своими индивидуальными артикулами, ценой, длиной и цветом. Например, в виде списка в таблице или в виде аджакс-формы.

Итого на странице карточки товара бутуд представлены:

1) Представление обобщенного товара "Палка" (Заголовок, описание и пр.)

2) Реальные товары со своими индивидуальными атрибутами:

Палка (10см) - (синяя) = (10 руб)

Палка (15см) - (синяя) = (15 руб),

Палка (20см) - (синяя) = (18 руб) (старая партия),

Палка (20см) - (синяя) = (17 руб) (новая партия),

и т.д.

LH
На сайте с 26.09.2013
Offline
89
#14
borisd:
Leonid H,
В чем проблема?

То есть получается будут две таблицы, одна из которых дает общее представление, в которой мы указываем артикул..

----------------------------------

| id | title | desc | артикул |

| 1 | Утюг | хороший утюг | ee24 |

---------------------------------- ????

.. а вот второй таблице записи типа: ??

----------------------------------

| id | артикул | цвет | цена |

----------------------------------

| 1 | ee24 | синий | 200 |

----------------------------------

| 2 | ee24 | красный | 400 |

----------------------------------

???

B
На сайте с 13.02.2008
Offline
262
#15

Leonid H, в представлении товара артикул не нужен, артикул должен быть у реальных товаров (во второй таблице) и он должен быть свой у каждого реального товара, в вторую таблицу также нужно добавить поле с id представления товара, чтобы связать вторую таблицу с первой.

----------------------------------

| id | title | desc |

| 1 | Утюг | хороший утюг |

---------------------------------- ????

.. а вот второй таблице записи типа: ??

----------------------------------

| id | display_id | артикул | цвет | цена |

----------------------------------

| 1 | 1 | ee24-1 | синий | 200 |

----------------------------------

| 2 | 1 | ee24-2 | красный | 400 |

----------------------------------


---------- Добавлено 17.09.2016 в 20:22 ----------

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

Но этот подход не годится для товаров, которые реально не лежат на складе, а подготавливаются по заказу клиента, например, если палка нарезается по желанию клиента по любым размерам - число вариантов длин которых или очень большое, или вообще бесконечно.

LH
На сайте с 26.09.2013
Offline
89
#16

Спасибо! Более менее понятно.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий