Эта тема на forum.dklab.ru


Alex00: Корзина
Код скрипта:

<?
if (isset($mycomputers)) //проверка наличия сессии
{
$db=mysql_connect("localhost","root","");
mysql_select_db("hastre03_pc",$db);
if (isset($delete)) //если Вы удаляете товар из корзины
{
$clients=mysql_query("delete from basket where id=$delete",$db);
}
else //если Вы добавляете товар в корзину
{
$clients=mysql_query("insert into basket …)",$db); //вставляем добавленный товар в БД
}
$result=mysql_query("select * from basket where name like '$mycomputers'",$db); //вывод содержимого корзины
if ($myrow=mysql_fetch_array($result))
{
do
{
// код, выводящий построчно содержание корзины
}
while ($myrow=mysql_fetch_array($result));
}
?>

Тестирование скрипта:

Открываю IE. Захожу в каталог товаров, где мне присваивается идентификатор ($Mycomputers – из сессии). Добавляю товары в корзину – например, сначала товар A, потом B, потом C. При этом при каждом добавлении товара данные о товаре заносятся в БД, а обновленное содержание корзины выводится в IE.
Закрываю это окно IE.
Открываю новое окно IE (как будто пришел новый пользователь).
Добавляю товары D, E, C. Все идет нормально до того момента, когда добавляю товар С. Данные в БД заносятся правильно, но содержание корзины выводится не верно. Выводится содержание корзины, в которой уже встречался товар С, т.е. выводятся товары A, B, C.

Лечится это двумя неприемлемыми способами:
- нажать кнопку «обновить» в браузере
- перед каждым новым открытием окна IE удалять временные файлы (свойства обозревателя > общие > Временные файлы Интернета > Удалить файлы …)

Что посоветуете???
Владимир Гаврилов:
Может быть, вы уже разобрались... Мне кажется, у вас возникает путаница с занесением товаров в БД
При этом при каждом добавлении товара данные о товаре заносятся в БД
Скажите, а есть ли смысл заносить в БД все товары, которые когда-то кто-то добавлял в корзину?
(Тем более что они есть в каталоге.)
Может проще сохранить корзину в сессии, например в виде массива, который будет содержать только коды (ID) добавленных товаров (наверняка такие есть - ID в смысле). А вот если человек "дойдет" до оформления заказа, то информацию о его заказе сохранить таблице "Заказы", присвоив заказу уникальный номер. И не будет лишней путаницы и избыточности данных. Спасибо.
("insert into basket …)" - в этом-то, возможно, и соль, что именно вы записываете в таблицу...

Эта тема на forum.dklab.ru