Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавление товара в корзину и работа с корзиной. (https://javascript.ru/forum/misc/79268-dobavlenie-tovara-v-korzinu-i-rabota-s-korzinojj.html)

savsoft 17.01.2020 06:47

Добавление товара в корзину и работа с корзиной.
 
Всем привет!

Есть сверстанный сайт на бутстрапе, есть админка на php. С этим проблем нет, но вот javascript и jquery только начинаю осваивать. Смутное представление есть, и если пример как что-либо сделать найти могу, но понять почему так и какой способ лучше, без опыта никак. Нет окончательного понимания, как правильно организовать работу с корзиной. Собственно вопросы.

1. При выводе страницы товаров на php, я сразу в кнопку купить могу вставить id товара.

И как лучше, добавить в кнопку onclick с вызовом функции с передачей id товара или добавить класс и его ловить через jquery и потом определять, кнопка с каким id нажата?

2. После нажатия кнопки "Купить/В корзину", я могу вызвать функцию, в которой сделать ajax запрос, передать в php id товара, проверить, нет ли товара в корзине, записать инфу в сессию, и по успеху, поменять количество товаров в корзине, изменить надпись на кнопке на "Уже в корзине" и фон кнопки. А вот как правильно добавить товар в таблицу товаров в корзине не знаю. И добавлять сразу или при вызове модального окна с содержимым корзины?

3. Содержимое корзины находится в модальном окне. Могу ли я менять свойства элементов при нажатии кнопки в корзине - в основном окне и при нажатии кнопки в основном окне - в модальном окне?

Спасибо

laimas 17.01.2020 07:34

Корзина товаров, это целая философия в торговле, ибо на ней может быть завязано многое. Где, как определяется не языком программирования и не кнопочками, а в первую очередь номенклатурой товара и торговой политикой магазина.

По способу хранения товаров можно назвать четыре типа корзины:

1) товары корзины хранятся на сервере в сессии до момента оформления заказа. Плюсы - если заказ не будет оформлен, то "мусор товарный" будет удален сборщиком мусора и разработчику за это можно не волноваться.

2) товары корзины хранятся на сервере в базе. Плюсы - возможность организации отложенной покупки, заказов и ожиданий. Минусы - разработчик обязан сам следить за мусором. Есть и "корзиночный симбиоз" - корзина, это сессия, но сессия, это база. Например, можно назвать Onencart, в котором есть организация собственного механизма сессий в базе.

3) товары корзины хранятся на клиенте в cookie. Такое хранение позволяет иметь доступ к ним как клиенту, так и серверу. Есть и плюсы, есть и минусы.

4) товары хранятся на клиенте в его сессионном/локальном хранилище, тоже самое есть и плюсы, и минусы.

Минусы для двух последних типов зависят от торговой политики магазина, то есть они имеют место быть, или их не будет.

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

laimas 17.01.2020 19:49

Не дали дописать все сразу.

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

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

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

Есть и другой момент, это учет товарных позиций. Полноценный магазин ведет учет товаров, их наличие, ожидаемое поступление и т.п. Два покупателя могут одновременно добавлять одну и туже товарную позицию в корзину, не подозревая о том, что она одна в наличии. Если корзина у сервера, значит тот кому не повезло узнает, что товара уже нет сразу по запросу его добавления в корзину. Если же корзина у клиента, то только при оформлении заказа, хотя можно эту проблему минимизировать.

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


Часовой пояс GMT +3, время: 12:23.