Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: манипуляции с содержимым корзины

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: btr   (03.12.2012 в 16:39)   письмо автору
 
   для: confirm   (03.12.2012 в 12:48)
 

Большое спасибо. буду переваривать :)

  Ответить  
 
 автор: confirm   (03.12.2012 в 12:48)   письмо автору
 
   для: btr   (03.12.2012 в 10:08)
 

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

Проверка существует товар или нет, чтобы выдать клиенту разрешение на добавление товара, операция излишняя на сам момент добавления, ведь не факт, что сервер ответит мгновенно. И вместо добавления товара в корзину получим нервотрепку, особенно, если добавление товара анимированное, когда копия изображения товара перемещается в корзину.

Какой смысл выставлять на страницах товар, который нельзя поместить в корзину - товары которых нет в наличии на складе? Такие товары либо можно заказать, а значит они существуют, и серверу разобраться в том какие товары отослать клиенту, а какие сохранить как заказ не сложно. Либо такие товары на страницах отсутствуют.

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

Что нужно для того чтобы поместить товар в корзину? По большому счету только его идентификатор. Вы же выводите на страницах практически всю информацию о товаре - идентификатор, цена, наименование, и описание, по крайней мере краткое. Этой информации достаточно, чтобы формировать корзину на стороне клиента (для текущей страницы) без участия сервера, причем для обеих представлений ее - краткой и полной. Полная информация о корзине, это ведь только добавление возможности ее редактирования, и если корзина формируется на клиенте, то и в этой операции сервер не участвует.

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

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

Товары, которые есть в наличии, помещаются в таблицу заказов, после чего уже сервер удаляет cookie-корзину клиента.

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

Javascript не оперирует ассоциативными массивами, но работает с объектами. При добавлении товара создается объект (если еще не создавался), в котором id товара является свойством объекта, а его значением массив, индексы которого описывают цену товара, описание, ссылку на фото. При каждом добавлении товара осуществляется обход этого объекта, просчитывается количество товаров и общая цена за них для краткого отображения корзины.

Вывод полной информации о корзине также обеспечивает клиентский скрипт - обходом объекта строится таблица с товарами с добавлением элементов редактирования - например, чекбоксов "удалить" и кнопок (ссылок), типа "удалить выбранные", "очистить корзину" и "оформить заказ". Асинхронный запрос на сервер может потребоваться в том случае, если покупатель может иметь скидки, бонусы, и т.п..

  Ответить  
 
 автор: Valick   (03.12.2012 в 10:20)   письмо автору
 
   для: btr   (03.12.2012 в 10:15)
 

ага, а в чем проблема? С ними можно работать и через JS
При добавлении товара в корзину отправляете по AJAX запрос на сервер и при подтверждении необходимого количества на складе резервируете товар и уже на стороне клиента средствами JS обновляете кукис.

  Ответить  
 
 автор: btr   (03.12.2012 в 10:15)   письмо автору
 
   для: Valick   (03.12.2012 в 10:12)
 

т.е. все, что выбрал клиент, запихивать ему в куки? :\

  Ответить  
 
 автор: Valick   (03.12.2012 в 10:12)   письмо автору
 
   для: btr   (03.12.2012 в 10:10)
 

кукисами

  Ответить  
 
 автор: btr   (03.12.2012 в 10:10)   письмо автору
 
   для: Valick   (03.12.2012 в 10:06)
 

сессия живет 30 минут. краем глаза обращал внимание, что содержимое корзины сохраняется несколько дней . как этого добиваются?

  Ответить  
 
 автор: btr   (03.12.2012 в 10:08)   письмо автору
 
   для: confirm   (03.12.2012 в 10:00)
 

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

сам понимаю, все не так, а КАК надо?

  Ответить  
 
 автор: Valick   (03.12.2012 в 10:06)   письмо автору
 
   для: confirm   (03.12.2012 в 10:00)
 

Согласен, в базе надо держать уже сформированный заказ.
Корзину достаточно держать в сессии.

  Ответить  
 
 автор: confirm   (03.12.2012 в 10:00)   письмо автору
 
   для: btr   (02.12.2012 в 13:23)
 

>выборка изкорзины не прошла

"из корзины"

Получается, что ваша корзина исключительно в базе, и чего-то там проверяем, что-то хотим удалить, не получается... И как у вас в дальнейшем решается вопрос с теми позициями, которые по некоторым причинам не получилось удалить, да и вообще с корзиной клиента, которую он просто забросил?

  Ответить  
 
 автор: btr   (02.12.2012 в 17:55)   письмо автору
 
   для: confirm   (02.12.2012 в 16:43)
 

ждем-с

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-23] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования