| 
	| 
	
	| 
		
	| 
			
			 
			
				15.01.2016, 09:33
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 26.11.2015 
						Сообщений: 28
					 
		
 |  |  
	| 
	
 
	| Сообщение от ivt22   |  
	| а мне как раз нужно что-то, что сохранялось бы при обновлении страницы и при переходе на другую страницу, что бы я мог таскать список товаров за пользователем, я новичек и книжку по JavaScript только начал читать, а задачу мне срочно нужно как-то решить. Потому что срок пробной версии Битрикса заканчивается через 4 дня и если я не успею клиенту показать рабочий вариант, то он не оплатит Битрикс. И тогда месяц работы коту под хвост. Вот я и прошу помощи, потомучто самостоятельно я никак не успеваю разобраться. |  
	
 Вот я как раз о том же говорю. Я использую сессию на клиенте, но как я понял можно и каждый раз запрос делать и при нажатии на кнопку, и при обновлении страницы. С помощью sessionStorage у меня работает. Но вот laimas указывает, что это лишнее. |  |  
	| 
		
	| 
			
			 
			
				15.01.2016, 11:43
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от melst |  
	| А как быть с данными которые получены асинхронно при обновлении страницы или переходе на другую? Я sessionStorage только для этого использую. |  
	
 
	
 
	| Сообщение от ivt22 |  
	| а мне как раз нужно что-то, что сохранялось бы при обновлении страницы и при переходе на другую страницу, что бы я мог таскать список товаров за пользователем |  
	
 Сессия, которую можно стартовать на сервере и использовать посредством супеглобального массива $_SESSION тогда по вашему для чего?
melst ,
 
 
session_start();
if (!isset($_SESSION['id'])) {
    $_SESSION['id'] = array();
    
}
array_push($_SESSION['id'], $id);
зачем тогда на сервере, если вы еще дублируете это на клиенте в sessionStorage?
 
Сессия по умолчанию живет 24 минуты, если в течении этого времени будет запрос от клиента, то смерть будет отложена на следующие 24 минуты, и т.д. Другими словами, если корзина хранится в сессии, то никуда она не пропадет при переходах между страницами, и пофигу каким образом данные для корзины получены от клиента, асинхронным запросом или нет. Только добавление товаров в корзину на сервере как изложено выше... ну в общем это не корзина. 
 
sessionStorage будут полезна тогда, когда у клиента будут отключены куки и идентифицировать сессию клиента не получится.
ivt22 , я уже писал, что куки можно использовать, и как сессионные, и как действующие установленное время. Только в Битриксе уже есть готовое, что касается продажи, корзины и прочего что с этим связано.
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				15.01.2016, 13:48
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 26.11.2015 
						Сообщений: 28
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| Только добавление товаров в корзину на сервере как изложено выше... ну в общем это не корзина. 
 |  
	
 Ну вот... А что есть корзина? Это я привел пример того как записываю каждый id в сессию. Кроме этого, конечно есть и полная выборка из БД. Проверки различные пока не делал. Костяк хочу сначала сотворить. |  |  
	| 
		
	| 
			
			 
			
				15.01.2016, 14:07
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от melst |  
	| А что есть корзина? |  
	
 Корзину, ее код, будет определять в том числе и способ добавления товара: по количеству - либо по одному одного товара, либо можно добавлять несколько одного и того же товара, по групповому/одиночному добавлению - либо можно выбрать группу различных товаров в категории на странице, либо только один товар.
 
Структура массива корзины должна быть такова, чтобы удобно было просчитать общее количество товаров и их общую стоимость, это нужно для краткого представления корзины.
 
Добавление товара в корзину начинается с запроса в базу - существует ли вообще такой товар, и если да, только затем пишется в сессию, в корзину, вернув в запросе цену товара, можно и другие важные характеристики, например наименование и т.п, чтобы по полном отображении корзины не делать более запросов в базу.
 
Если ли такой товар в корзине или нет, это вопрос резиновый, ибо если есть еще не означает, что отказать в доступе к корзине, ведь у товара может просто изменяться количество товаров в ней. А вот исключить из запроса клиента идентификаторы товаров которые уже есть в корзине надо, и если в запросе остались после этого ключи, значит это добавляемые товары, и по ним делается запрос в базу.
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				15.01.2016, 21:09
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 08.08.2014 
						Сообщений: 261
					 
		
 |  |  
	| я написал этот скрипт (но показывать его не буду, ну он уж очень мне не нравится в плане свой  поддерживаемости) в localStorage при клике я помещал name продукта... тоесть помещал строку, но сейчас пишу скрипт где будет помещаться обьект но переобразованный в строку через JSON, а из localStorage я читаю его как обьект, это наиного удобнее, так как получаешь сразу набор данных :  цена товара и описание, название продукта... Так с данными в localStorage намного легче работать... попробуй сам напиши... 			 Последний раз редактировалось DynkanMaclaud, 15.01.2016 в 21:12.
 |  |  
	| 
		
	| 
			
			 
			
				16.01.2016, 01:01
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от DynkanMaclaud |  
	| Так с данными в localStorage намного легче работать... |  
	
 Не путайте корзину товаров, которую нужно класть в сессию, а не в локальное хранилище, с базой товаров, которую уж никак в локальное хранилище помещать нельзя. |  |  
	| 
		
	| 
			
			 
			
				16.01.2016, 11:39
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 08.08.2014 
						Сообщений: 261
					 
		
 |  |  
	| laimas,Вы в своем примере ориентированны на php и БД, да список товаров на странице нужно получать из БД, но корзину товаров для пользователя можно хранить в локальном хранилище (а почему её там нельзя хранить?))
 			 Последний раз редактировалось DynkanMaclaud, 16.01.2016 в 11:43.
 |  |  
	| 
		
	| 
			
			 
			
				16.01.2016, 12:33
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от DynkanMaclaud |  
	| корзину товаров для пользователя можно хранить в локальном хранилище (а почему её там нельзя хранить?) |  
	
 Я писал, что нет смысла хранить товары в сессионном хранилище на клиенте, если есть сессия на сервере, добавление товара и изменение корзины обязательно через запрос сервера делается.
 
Сессия/сессионное хранилище клиента хорошо для корзины тем, что передумал покупатель, просто ушел, и не останется мусора за ним. Работая же с локальным хранилищем нужно очищать его, все таки не есть хорошо забивать его чем непопадя и кому угодно.
 
Что касается "с данными в localStorage намного легче работать", это вздор, гораздо проще выглядят операции с корзиной на сервере, а если в смысле доступа к ним, то нет ни каких отличий. |  |  
	| 
		
	| 
			
			 
			
				16.01.2016, 13:11
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 08.08.2014 
						Сообщений: 261
					 
		
 |  |  
	| laimas,возможо тот человек который создал эту тему не знает основ php, ну а тут надо параметры отправить на сервер эти параметры нужно обработать далее закинуть в сесссию и сделать это все через ajax... а может просто легче ему на клиенте все это хранить?)) тут знаний чистого js достаточно будет))))
 |  |  
	| 
		
	| 
			
			 
			
				16.01.2016, 13:23
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Товары содержатся на сервере, торгует сервер, контроль торговых операций также осуществляется сервером. Каким боком к этому имеет отношение локальное хранилище не понятно - не будет сервера, значит и все хранилища на клиенте это ноль. |  |  |  |