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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Добавление выбранных элементов в корзину
 
 автор: Katerina   (25.04.2006 в 13:43)   письмо автору
 
 

Ребята! Подскажите пожалуйста! Каким образом организовывается добавление из каталога(например каталог товаров) в корзину...Причем каталог выводится не на одной странице, а на нескольких...и можно добавить только определенное количество товаров(количество хранится в БД). Каталог я вывожу из базу данных через форму и чекбоксы. Честно говоря, кроме как записывать корзины в бд, ничего умного в голову не приходит. Но это наверно не правильный способ. На одном сайте прочитала, что можно как-то сделать через сессии. Подскажите, в каком вообще направлении двигаться?

   
 
 автор: cheops (из кафе)   (25.04.2006 в 15:24)
 
   для: Katerina   (25.04.2006 в 13:43)
 

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

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

   
 
 автор: Trianon   (25.04.2006 в 15:45)   письмо автору
 
   для: cheops (из кафе)   (25.04.2006 в 15:24)
 

>PS Хотя, если честно, в хранении товарных позиций каждого
>пользователя в базе данных никакой крамолы нет - многие
>Интернет-магазины так и поступают.

В этом случае нагрузка на БД более жестокая. Ведь в этом случае при формировании заказа к БД обращаются не только SELECT, но и INSERT/UPDATE/DELETE
Есть и проивоположные решения - хранить корзину неоформленного до конца заказа в кукисе. Тогда сессионная база не захламляется корзинами. Более того, во некоторых случаях сессии вообще не приходится создавать.

А ведь полуоформленных заказов может оказаться на порядок (даже на несколько порядков) больше оформленных до конца.

   
 
 автор: Katerina   (25.04.2006 в 15:58)   письмо автору
 
   для: cheops (из кафе)   (25.04.2006 в 15:24)
 

А можно поподробнее про вот этот вариант с сессиями? просто я в них еще не очень рублю...И еще....У меня принцип примерно такой вырисовывается:

1. Появляется страничка с позициями, например от 1 до 20...
2. Пользователь выбирает например позиции какие ему нужны и кладет их в корзину( и тут же проверяется, может ли он вообще в корзину что-нить положить)
3. Переходит на другую страничку (с 21 по 40 и т.д.)
4. Также выбирает позиции и кладет в корзину
5. Если пользователь возвращается на предыдущую страницу, то выбранные позиции должны оставаться!
6. После того как он выбрал все, что ему нужно, он идет в корзину и уже смотрит выбранные товары более подробно.

Сейчас, у меня получается работает только пункт 1 и 3)

Вот! Теперь могу уже точно сформулировать свои вопросы:

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

   
 
 автор: cheops   (26.04.2006 в 13:00)   письмо автору
 
   для: Katerina   (25.04.2006 в 15:58)
 

1. В сессию можно поместить данные следующим образом
<?php
  
// Инициируем сессию
  
session_start();
  
// Помещаем значения
  
$_SESSION['key'] = $value;
?>

2) Да, данные будут доступны на всех страницах, где имеется вызов session_start() до тех пор, пока пользователь не закроет окно браузера.
3) Вывести данные из сессии можно следующим образом
<?php
  
// Инициируем сессию
  
session_start();
  
// Выводим данные
  
echo $_SESSION['key'];
?>

   
 
 автор: Katerina   (27.04.2006 в 09:10)   письмо автору
 
   для: cheops   (26.04.2006 в 13:00)
 

Спасибо большое за подсказку! И, можно, последний вопрос, можно ли в сессию записать целый массив? И если да, то как это будет выглядеть? Так:


$_SESSION[ 'key[ $i ]' ]=$value

?

Или по-другому?

   
 
 автор: cheops   (27.04.2006 в 10:12)   письмо автору
 
   для: Katerina   (27.04.2006 в 09:10)
 

Да, можно записать и массив, если вы имеете дело с одномерным массивом $key, то записать его в сессию можно так
<?php
  $_SESSION
['key'] = $key;
?>

А обращаться к элементам массива $key можно как к элементам двухмерного массива
<?php
  
echo $_SESSION['key'][0]."<br>";
  echo 
$_SESSION['key'][1]."<br>";
  echo 
$_SESSION['key'][2]."<br>";
  ...
?>

   
 
 автор: Loki   (27.04.2006 в 10:22)   письмо автору
 
   для: Katerina   (27.04.2006 в 09:10)
 


$_SESSION[ 'key' ][ $i ]=$value 

   
 
 автор: Katerina   (27.04.2006 в 16:59)   письмо автору
 
   для: Katerina   (27.04.2006 в 09:10)
 

Спасибо вам большое за помощь! Сейчас попробую!

   
Rambler's Top100
вверх

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