@Deman1

Как устроена система магазина?

Добрый вечер подскажите как реализовать систему магазина, у меня есть товар на сайте и я его должен как то передавать в корзину + считать сколько всего выбрано, как я понял я должен запоминать иды товара а потом их прогружать, а как их это обрабатывать я не знаю, если не сложно не могли бы приложить самый простенький пример или подсказать возможную реализацию и как
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
alex-1917
@alex-1917
Если ответ помог, отметь решением
www.jooom.ru/toster/cart.html

<div id="wrapper">
		<h1>Корзина покупок на LocalStorage</h1>
	<div class="item_box">
		<h3 class="item_title">Samsung Galaxy S10</h3>
		<p>Цена: <span class="item_price">20</span>$</p>
		<button class="add_item" data-id="7">Добавить в корзину</button>
	</div>
	<div class="item_box">
		<h3 class="item_title">LG Optimus G E100500</h3>
		<p>Цена: <span class="item_price">100</span>$</p>
		<button class="add_item" data-id="2">Добавить в корзину</button>
	</div>
	<div class="item_box">
		<h3 class="item_title">Nokia 2110</h3>
		<p>Цена: <span class="item_price">1000</span>$</p>
		<button class="add_item" data-id="5">Добавить в корзину</button>
	</div>
	<p><button id="checkout">Оформить заказ</button> &nbsp; <button id="clear_cart">Очистить корзину</button></p>
	<div id="cart_content"></div>
</div>


var d = document,
    itemBox = d.querySelectorAll('.item_box'), // блок каждого товара
		cartCont = d.getElementById('cart_content'); // блок вывода данных корзины
// Функция кроссбраузерная установка обработчика событий
function addEvent(elem, type, handler){
  if(elem.addEventListener){
    elem.addEventListener(type, handler, false);
  } else {
    elem.attachEvent('on'+type, function(){ handler.call( elem ); });
  }
  return false;
}
// Получаем данные из LocalStorage
function getCartData(){
	return JSON.parse(localStorage.getItem('cart'));
}
// Записываем данные в LocalStorage
function setCartData(o){
	localStorage.setItem('cart', JSON.stringify(o));
	return false;
}
// Добавляем товар в корзину
function addToCart(e){
	this.disabled = true; // блокируем кнопку на время операции с корзиной
	var cartData = getCartData() || {}, // получаем данные корзины или создаём новый объект, если данных еще нет
			parentBox = this.parentNode, // родительский элемент кнопки &quot;Добавить в корзину&quot;
			itemId = this.getAttribute('data-id'), // ID товара
			itemTitle = parentBox.querySelector('.item_title').innerHTML, // название товара
			itemPrice = parentBox.querySelector('.item_price').innerHTML; // стоимость товара
	if(cartData.hasOwnProperty(itemId)){ // если такой товар уже в корзине, то добавляем +1 к его количеству
		cartData[itemId][2] += 1;
	} else { // если товара в корзине еще нет, то добавляем в объект
		cartData[itemId] = [itemTitle, itemPrice, 1];
	}
	// Обновляем данные в LocalStorage
	if(!setCartData(cartData)){ 
		this.disabled = false; // разблокируем кнопку после обновления LS
		cartCont.innerHTML = 'Товар добавлен в корзину.';
		setTimeout(function(){
			cartCont.innerHTML = 'Продолжить покупки...';
		}, 1000);
	}
	return false;
}
// Устанавливаем обработчик события на каждую кнопку &quot;Добавить в корзину&quot;
for(var i = 0; i < itemBox.length; i++){
	addEvent(itemBox[i].querySelector('.add_item'), 'click', addToCart);
}
// Открываем корзину со списком добавленных товаров
function openCart(e){
	
	var cartData = getCartData(), // вытаскиваем все данные корзины
			totalItems = '';
	console.log(JSON.stringify(cartData));
	// если что-то в корзине уже есть, начинаем формировать данные для вывода
	if(cartData !== null){
		totalItems = '<table class="shopping_list"><tr><th>Наименование</th><th>Цена</th><th>Кол-во</th></tr>';
		for(var items in cartData){
			totalItems += '<tr>';
			for(var i = 0; i < cartData[items].length; i++){
				totalItems += '<td>' + cartData[items][i] + '</td>';
			}
			totalItems += '</tr>';
		}
		totalItems += '<table>';
		cartCont.innerHTML = totalItems;
	} else {
		// если в корзине пусто, то сигнализируем об этом
		cartCont.innerHTML = 'В корзине пусто!';
	}
	return false;
}
/* Открыть корзину */
addEvent(d.getElementById('checkout'), 'click', openCart);
/* Очистить корзину */
addEvent(d.getElementById('clear_cart'), 'click', function(e){
	localStorage.removeItem('cart');
	cartCont.innerHTML = 'Корзина очишена.';	
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@karminski
Senior React.JS Developer
Даже не знаю как вам сказать. Интернет-магазин - достаточно сложная вещь. Если вы задаетесь вопросом как это работает - значит ваш уровень знаний в разработке сайтов сильно ниже необходимого для создания Интернет-магазина.

Тем не менее, быстро нагуглилось вот это
https://php-start.com/course/php-start-practice
https://school-php.com/blog/10/-как-создавать-инте...

Почитайте, возможно это сподвигнет вас изучать разработку активнее.

Отвечая на ваш вопрос на пальцах. Ваши товары скорее всего хранятся в базе данных, в ней же должна быть таблица с корзиной пользователей (примерная структура: id-пользователя, id-товара, кол-во, цена и т.п.). Когда пользователь кладет товар в корзину, в эту таблицу добавляется запись. А дальше вам нужно посчитать кол-во товаров и их цену и выставить пользователю счёт на оплату. Это на пальцах. Как это реализовано у вас, никто кроме вас не знает. Вероятно даже вы не знаете.
Ответ написан
Ваш ответ на вопрос

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

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