Показать сообщение отдельно
  #1 (permalink)  
Старый 08.08.2017, 12:05
Аспирант
Отправить личное сообщение для АнонимныйПарень Посмотреть профиль Найти все сообщения от АнонимныйПарень
 
Регистрация: 17.03.2017
Сообщений: 67

PHP JQUERY КОРЗИНА
Пишу "корзину" на php, jquery. Логика такая: на js при загрузке страницы кидаю на сервер ajax запрос, о том что нужно вывести из бд товары. Сервер понимает это, выбирает товары, запаковывает их в JSON и кидает на клиент. На клиенте я принимаю JSON данные и вывожу их на страничку. Если пользователь нажмет на цену, то js добавляет данные про этот товар в localStorage. Что-бы посмотреть купленный товар, нужно зайти на страничку "Корзина" и там я вытягиваю из localStorage эти данные. Вопрос: как положить эти данные в объект, который я ложу в localStorage. Дальше код, там будет понятнее:

var cart = {};

function init () {
	$.post(
		"../templates/core.php",
		{
			"action" : "init"
		},
		showGoods
	);
};

function showGoods (data) {
	data = JSON.parse(data);

/*	console.log(data);*/

	var out = '';

	for (var key in data) {
		out += '<div class="single_goods" style="padding-right: 0px; padding-left: 0px;">';
		out += '<b> ЗАМОК: ' + data[key].name + '</b>';
		out += `<img src="${data[key].image}">`; 
		out += '<p> Размер: ' + data[key].size + '</p>';
		out += '<p> Цвет: ' + data[key].color + '</p>';
		out += '<div class="btn-group" style="width: 100%;">';
		out += '<button type="button" class="btn btn-warning cost add" style="width: 100%; font-size: 1.7rem;" data-art="'+data[key].id+'"> Купить за: ' + data[key].cost +  '$</button>';
		out += '</div>';
		out += '</div>';
	}
	$('#goods').html(out);
	$('.add').on("click", addToCart);
};

function addToCart () {
	var articul = $(this).attr('data-art');

	if (cart[articul] != undefined) {
		cart[articul]++;
	}
	else {
		cart[articul] = 1;
	}

	localStorage.setItem('cart', JSON.stringify(cart));

	showCart();
};

function checkCart () {
	if (localStorage.getItem('cart') != null) {
		cart = JSON.parse(localStorage.getItem('cart'));
	}
};

function showCart () {
	var out = '';
	for (var w in cart) {
		out += '<span> ID товара: '+ w +'</span> <br>'+'<span> Кол-во товара: '+ cart[w] +'</span> <br> <span> Название:  '+ cart[w].name +' <br> <br>';
	}
	$('#cart').html(out);
};

$(document).ready(function () {
	init();
	checkCart();
	showCart();
});


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

Это core.php

<?php 
	$action = $_POST['action'];

	require '../templates/functions.php';

	switch ($action) {
		case 'init':
			init();
			break;
	}
 ?>

Это functions.php

<?php 
	connect();

	function connect () { //Подключение к БД
		$connection = new mysqli("localhost", "root","", "goods");

		if (!$connection) {
			die("Connection failed: " . mysqli_connect_error());
		}
		return $connection;
	}

	function init() { //Вывод товаров
		$conn = connect();
		$sql = "SELECT * FROM padlocks";
		$result = mysqli_query($conn, $sql);

		if (mysqli_num_rows($result) > 0) {
			$out = array();

			while ($row = mysqli_fetch_assoc($result)) {
				$out[$row["id"]] = $row;
			}
			echo json_encode($out);
		} else {
			echo "0";
		}
		mysqli_close($conn);
	}
 ?>


Сама корзина:

var cart = {};

function checkCart () {
	if (localStorage.getItem('cart') != null) {
		cart = JSON.parse(localStorage.getItem('cart'));
		showCart();
	}
};

function showCart () {
	var out = '';
	for (var w in cart) {
		out += '<span> ID товара: '+ w +'</span> <br>'+'<span> Кол-во товара: '+ cart[w] +'</span> <br> <span> Название:  '+ cart[w].name +' <br> <br>';
	}
	$('#my-cart').html(out);
};


$(document).ready(function () {
	checkCart();
});


Вопрос: почему имя undefined? Подправьте где надо, пожалуйста!
Ответить с цитированием