Я думаю, через $_SESSION.
Для счетчика товаров все понятно :
$_SESSION['goods_in_basket']
и каждый раз при добавлении товара ++ , при удалении --
но как сохранять динамический массив кодов товара и его кол-во в $_SESSION?
Может существует уже проверенный способ реализации корзины?
Спс за советы.
Спустя 17 минут, 29 секунд (14.07.2010 - 15:03) Basili4 написал(а):
очень просто при добавлении ложи все в теблицу тип ей укажи memory а в сессиии храни только индификатор пользователя и потом из таблицу все выберай.
Спустя 13 минут, 33 секунды (14.07.2010 - 15:17) linker написал(а):
В самом простом случае массив, где ключ элемента - идентификатор товара, а значение элемента - количество. Сохранить/восстановить - serialize()/unserialize()
В случае с бд, 100% в таблице будет скапливаться куча мусора, в случае сессии, корзина юзверя будет жить, пока живет его сессия. Плюс, в таблице надо хранить идентификатор юзверя (зарегистрирован и залогинен) или его сессии (гость).
В случае с бд, 100% в таблице будет скапливаться куча мусора, в случае сессии, корзина юзверя будет жить, пока живет его сессия. Плюс, в таблице надо хранить идентификатор юзверя (зарегистрирован и залогинен) или его сессии (гость).
Спустя 2 минуты, 26 секунд (14.07.2010 - 15:19) Basili4 написал(а):
linker
ну бей записи в случаи покупки отмены. не отчистил пользюук корзину вышел вернулся а у него козина не пустая а с тем что он прошлый раз выбрал красота
ну бей записи в случаи покупки отмены. не отчистил пользюук корзину вышел вернулся а у него козина не пустая а с тем что он прошлый раз выбрал красота
Спустя 6 минут, 56 секунд (14.07.2010 - 15:26) linker написал(а):
Basili4, ну юзверь просто закрыл браузер и ничего не нажимал, корзина так и осталась в таблице валяться. Это хорошо только для зареганых юзверей, для всех остальных будет скапливатсья ненужный мусор. Просто для примера:
$Recycle = unserialize($_SESSION['Recycle']);
// Не забываем, ключ - это ID товара, а значение - количество товара
$Result = mysql_query("select * from tovars where tovar_id in (" . join(',', array_keys($Recycle)) . ")");
while($Tovar = mysql_fetch_assoc($Result))
{
echo 'Товар: ' . $Tovar['tovar_name'] . ' в количестве ' . $Recycle[$Tovar['tovar_id']] . ' шт.<br>';
}
Спустя 29 секунд (14.07.2010 - 15:26) KaFe написал(а):
В сессиях можно сохранять массивы
А лучше вообще с помощью куков все делать, пусть пользователи хранят сами у себя что заказали, а потом из данного списка оформляют заказ.
$_SESSION[arr] =array (Philips, Unit, Hp, Samsung);
print_r($_SESSION[arr]);
А лучше вообще с помощью куков все делать, пусть пользователи хранят сами у себя что заказали, а потом из данного списка оформляют заказ.
Спустя 44 секунды (14.07.2010 - 15:27) linker написал(а):
KaFe, тем более не вижу причин мутить с базой данных
Спустя 1 минута, 55 секунд (14.07.2010 - 15:29) Basili4 написал(а):
linker
дык добавляй запись в таблу только при добавлении товара в корзину и не будет мусора
дык добавляй запись в таблу только при добавлении товара в корзину и не будет мусора
Спустя 12 секунд (14.07.2010 - 15:29) KaFe написал(а):
linker да я о том же, просто Basili4 все хочет решить через БД, это я уже давно заметил Даже кэширование страниц через БД, но не будем вспоминать события прошедших дней
Спустя 2 минуты, 33 секунды (14.07.2010 - 15:32) Basili4 написал(а):
KaFe
ага а ты через все кроме БД я тоже заметил просто есть инфа котору надо хранить в бд вот корзина это та самая инфа
ага а ты через все кроме БД я тоже заметил просто есть инфа котору надо хранить в бд вот корзина это та самая инфа
Спустя 21 секунда (14.07.2010 - 15:32) KaFe написал(а):
Комментирую сам себя.
Цитата (KaFe @ 14.07.2010 - 12:26) |
А лучше вообще с помощью куков все делать, пусть пользователи хранят сами у себя что заказали, а потом из данного списка оформляют заказ. |
Но тут главное продумать защиту.
Спустя 1 минута, 10 секунд (14.07.2010 - 15:33) linker написал(а):
Basili4, ну вот представь, я зашел на озон, выбрал книжичек, положил их в корзину, а потом передумал, потому что нашел в другом месте за чуть дешевле. Вы думаете я полезу в корзину очищать ее, нет, я просто закрою страницу озона и все. Спрашивается, что будет с данными, которые я поместил в свою корзину? В случае с бд, они так и будут там валяться, а так как я не зареган на озоне, то в следующий раз будет создана еще одна корзина с новыми данными, которые также имеют все шансы не удалиться.
Спустя 2 минуты, 9 секунд (14.07.2010 - 15:35) Basili4 написал(а):
можно указать время хранения и бить данные устаревшие данные но я тут подумал наверное ты прав. лучше в сессию
Спустя 1 минута, 27 секунд (14.07.2010 - 15:37) linker написал(а):
Basili4, именно, придется еще отдельно мутить сервис, который по крону или еще как будет ходить и чистить таблицу от левака, нагружая мускул работой, от которой можно спокойно уйти используя сессии.
Спустя 44 секунды (14.07.2010 - 15:38) KaFe написал(а):
Цитата (Basili4 @ 14.07.2010 - 12:32) |
просто есть инфа котору надо хранить в бд вот корзина это та самая инфа |
Я не думаю. Очень это уж не стабильная информация. В БД и фалах, хранят информацию, которая изменяется относительно редко. Я книжку по "теории баз данных" читал там практически так и написано.
Или еще такое примерно, в таблицах надо хранить факты описывающие определенный субъект.
Не факт что юзерь купит книгу
Спустя 9 минут, 2 секунды (14.07.2010 - 15:47) vovabraga написал(а):
думаю реализация через БД, это засорение базы только, вот в сессиях - это логично. Скорее всего подойдет реализация динамического массива. Может есть примеры или ссылки?
Спустя 26 минут, 43 секунды (14.07.2010 - 16:13) inpost написал(а):
Ну так если человек на пол часа отвлечется, то все, кранты сессии! А человек выбрал целый список товара, ушел кушать, вернулся - а все пусто, или перепад напряжения был, или по случайности нажал закрыть окно.
Может все-таки в таблице, а id хранить в кукисах?
А кроном чистить в 3-5 утра, когда активности на сайте нету, и нагрузка на сервер не страшна
Может все-таки в таблице, а id хранить в кукисах?
А кроном чистить в 3-5 утра, когда активности на сайте нету, и нагрузка на сервер не страшна
Спустя 2 часа, 8 минут, 35 секунд (14.07.2010 - 18:22) vovabraga написал(а):
А сессия сколько хранится времени?
Спустя 1 минута, 12 секунд (14.07.2010 - 18:23) Ice написал(а):
по умолчанию 24 минуты.
Народ, как смотрите на хранение массива товаров в куках с включенным параметром httponly?
Народ, как смотрите на хранение массива товаров в куках с включенным параметром httponly?
Спустя 5 минут, 43 секунды (14.07.2010 - 18:29) vovabraga написал(а):
Продлить можно? Через куки есть свои подводные камни?
Спустя 5 минут, 9 секунд (14.07.2010 - 18:34) vovabraga написал(а):
Читаю, с куками тоже есть свои траблы
Спустя 11 минут, 45 секунд (14.07.2010 - 18:46) inpost написал(а):
Чем меньше даёшь пользователю, тем меньше проблем!
С таблицей безопаснее всего было бы, если конечно стараться. Кукисы хранятся на стороне клиента, а он может с ними делать все что угодно! Вплоть даже до изменений.
С таблицей безопаснее всего было бы, если конечно стараться. Кукисы хранятся на стороне клиента, а он может с ними делать все что угодно! Вплоть даже до изменений.
Спустя 1 час, 27 минут, 16 секунд (14.07.2010 - 20:13) Ice написал(а):
Шифрование кук происходит с закрытым ключом, так что изменение такой куки не так-то просто.
Спустя 11 минут, 35 секунд (14.07.2010 - 20:25) Basili4 написал(а):
Ice
а ключ выберается по какому алгоритму если есть возможность предугадать ключь грош цена этому алгоритму
а ключ выберается по какому алгоритму если есть возможность предугадать ключь грош цена этому алгоритму
Спустя 30 минут, 4 секунды (14.07.2010 - 20:55) Ice написал(а):
сам проставляешь хоть 'supersecretkey'
$iv_size = mcrypt_get_iv_size( MCRYPT_BLOWFISH, MCRYPT_MODE_ECB );
$iv = mcrypt_create_iv( $iv_size, MCRYPT_RAND );
$key = "Никто ничего не узнает";
$text = "Завтра в сквере, возле театра. В 5."; //(с)
// поехали
$crypttext = mcrypt_encrypt( MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_ECB, $iv );
print $crypttext; // ��s]1J�*��"l*��K�=�1%H�ʂ��bEUo!��[�cyfh|NZsh��$BS:C4I����
// расшифровываем
$decrypttext = mcrypt_decrypt( MCRYPT_BLOWFISH, $key, $crypttext, MCRYPT_MODE_ECB, $iv );
print $decrypttext; // Завтра в сквере, возле театра. В 5.
Спустя 13 часов, 10 минут, 31 секунда (15.07.2010 - 10:05) vovabraga написал(а):
Цитата (Ice @ 14.07.2010 - 17:55) |
сам проставляешь хоть 'supersecretkey'
|
почему тогда через куки не хранить корзину, зачем использовать БД?
Спустя 1 час, 49 минут, 14 секунд (15.07.2010 - 11:54) inpost написал(а):
vovabraga а кто тебе сказал, что не стоит через куки? Можно и так и так.
Спустя 44 минуты, 57 секунд (15.07.2010 - 12:39) vovabraga написал(а):
Цитата (inpost @ 15.07.2010 - 08:54) |
vovabraga а кто тебе сказал, что не стоит через куки? Можно и так и так. |
Начал писать через куки, но не вижу смысла держать id товаров и кол-во в базе
Спустя 20 минут, 26 секунд (15.07.2010 - 13:00) Ice написал(а):
в базе каталог товаров держи
Спустя 1 час, 2 минуты, 46 секунд (15.07.2010 - 14:03) vovabraga написал(а):
Цитата (Ice @ 15.07.2010 - 10:00) |
в базе каталог товаров держи |
Это понятно Уже реализовал на sql и базу клиентов, разделов тоже.