Задать вопрос
Awake_Pulse
@Awake_Pulse
Делаю вид, что умею программировать

Как реализовать добавление товара с количеством в корзину?

Есть уже готовый код для добавления товаров в localStorage и последующей их отрисовки на странице. Но понадобилось добавить количество товара, а как эт правильно реализовать не могу понять. Точнее, понимаю, что через список, скорее всего, но со списками дружить не получается. Добавляется id товара в localStorage посредством нажатия кнопки.
1) php-файл с кнопкой:
<button class="k"><a class="product_link_id" data-id="<?php echo $product->ID?>">Купить</a></button>

По нажатию, в localStorage отправляется ID товара из БД. В localStorage появляется массив со значением: "key" - ["1"]. Добавлю ещё товар, получится: "key" - ["1", "2",...].

2) js-файл с функцией добавления ID'шника в lS:
let count;
if (localStorage.getItem('products') && localStorage.getItem('products') != 0) {
    count = JSON.parse(localStorage.getItem('products'))
} else {
    count = []
}

this.keyName = 'products';

// Получаю ID'шник кнопки.
document.querySelector('.product_link_id').onclick = () => {
    getItemId(event.target.dataset.id);
}

// Убираю object Object из localStorage
localStorage.setItem(this.keyName, JSON.stringify(count));
id = JSON.parse(localStorage.getItem(this.keyName));

// Добавление товара в корзину
const getItemId = id => {
    count.push(id);
    
    let Duplic = [];
    count.forEach((element) => {
        if (!Duplic.includes(element)) {
            Duplic.push(element);
        }
    });
   
    console.log(localStorage.setItem(this.keyName, JSON.stringify(Duplic)));  //id
}

В каком моменте нужно создавать список с ID и его количеством? И как правильно это делается?
  • Вопрос задан
  • 1280 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Awake, вопрос: Нахрена хранить это в стораже, если все равно лазеете на сервер при каждом чихе. Храните в сессии, или в бд, на сервер отсылайте только прибавить/убавить/удалить. Обратно получайте хтмл корзины, ну или жсон структуру и из нее уже хтмл лепите.

Если очень хочется хранить в стораже - храните жсон строку под индексом товара, в котором уже цена, количество, от вашего кода нифига не изменится, кроме пары строк.
будет у вас структура типа
{
   "1":{
      "id":1,
      "qty":2,
      "price":666
   },
   "2":{
      "id":2,
      "qty":1,
      "price":77
   }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы