PapaKitson
Новичок
Дублирование значений и удаление значений переменной сессии
В процессе написания скрипта с использованием PHP + MySQL для интернет магазина понадобилось написать модуль корзины покупок.
Это подразумевает следующие функции: добавление товара в корзину, удаление товара из корзины + еще несколько фичей с которыми проблем не возникло. Корзина построена с использованием механизма сессий и работает следующим образом:
- клиент видит изображение товара + описание + цену. Для того чтобы добавить товар в корзину он кликает по кнопке "ADD TO CART".
Происходит добавление значения в определенную переменную сессии. Ну и далее в том же духе ... в процессе чего формируется массив значений переменной сессии с идентификаторами продуктов. Тут проблем собственно тоже не возникло.
НО! Если к примеру клиент щелкнул по одному и тому же товару несколько раз - этот товар столько раз и добавляется в корзину, т.е. идет дублирование однотипного товара, что и является первой проблемой, помочь в решении которой я и прошу. Теперь это все в коде:
Когда клиент щелкает по кнопку добавления, в адресной строке прописывается следующее:
_http://www.ХХХ.com/cart.php?add=18&PHPSESSID=06216ff994e8879fbb2e48e611c00927
в ней, add=18 - это добавление в корзину товара с идентификатором 18. Идентификатор получаеи из таблицы базы данных MySQL
Код в скрипте, отвечающий за добавление товара приведен ниже
Короче говоря в переменную сесии "products" записывается новое значение из $add
Вот именно здесь и надо прописать код, который бы отвечал за контроль дублей продуктов, т.е. если пользователь еще раз или десять раз решил бы добавить товар с идентификатором 18, он в корзину бы не добавлялся, т.е. в переменной сессии не было бы нескольких значений 18.
Следующая проблема - когда мы уже имеем сформированную корзину продуктов, т.е. массив значений переменной "products", пользователь к примеру передумал, и решил некий продукт из корзины удалить.
По идее решение проблемы сводится к удалению из массива определенного указанного значения. Замечу, что массив состоит из т.н. ключа + значение:
(key + value). Так вот надо некое значение из массива и удалить.
Теперь в коде - возле каждого продукта имеется ссылка DELETE. После клика по такой ссылке в адресной строке прописывается следующее
_http://www.ХХХ.com/cart.php?del=14&PHPSESSID=06216ff994e8879fbb2e48e611c00927
В ней del=14 - это признак удаления из корзины товара с идентификатором 14
Вот это я собственно только и написал, посему понял, что чтото делаю не то, так как "[$del]" в данном случае читается скриптом как ключ а не значение. Ну и естественно товар с номером 18 не удаляется...
Поскольку с сессиями у меня всегда бошка не дружила
я полез в мануал. Но мануал ничего нового мне не дал.
-~{}~ 02.10.05 16:57:
С первой частью вопроса уже разобрался самостоятельно ...
Осталась вторая - удаление ...
В процессе написания скрипта с использованием PHP + MySQL для интернет магазина понадобилось написать модуль корзины покупок.
Это подразумевает следующие функции: добавление товара в корзину, удаление товара из корзины + еще несколько фичей с которыми проблем не возникло. Корзина построена с использованием механизма сессий и работает следующим образом:
- клиент видит изображение товара + описание + цену. Для того чтобы добавить товар в корзину он кликает по кнопке "ADD TO CART".
Происходит добавление значения в определенную переменную сессии. Ну и далее в том же духе ... в процессе чего формируется массив значений переменной сессии с идентификаторами продуктов. Тут проблем собственно тоже не возникло.
НО! Если к примеру клиент щелкнул по одному и тому же товару несколько раз - этот товар столько раз и добавляется в корзину, т.е. идет дублирование однотипного товара, что и является первой проблемой, помочь в решении которой я и прошу. Теперь это все в коде:
Когда клиент щелкает по кнопку добавления, в адресной строке прописывается следующее:
_http://www.ХХХ.com/cart.php?add=18&PHPSESSID=06216ff994e8879fbb2e48e611c00927
в ней, add=18 - это добавление в корзину товара с идентификатором 18. Идентификатор получаеи из таблицы базы данных MySQL
Код в скрипте, отвечающий за добавление товара приведен ниже
PHP:
session_start();
if (isset($add))
{
//***********************************************************
if (!isset($_SESSION["products"]))
{
$_SESSION["products"] = array();
}
$_SESSION["products"][] = $add;
//***********************************************************
}
Вот именно здесь и надо прописать код, который бы отвечал за контроль дублей продуктов, т.е. если пользователь еще раз или десять раз решил бы добавить товар с идентификатором 18, он в корзину бы не добавлялся, т.е. в переменной сессии не было бы нескольких значений 18.
Следующая проблема - когда мы уже имеем сформированную корзину продуктов, т.е. массив значений переменной "products", пользователь к примеру передумал, и решил некий продукт из корзины удалить.
По идее решение проблемы сводится к удалению из массива определенного указанного значения. Замечу, что массив состоит из т.н. ключа + значение:
(key + value). Так вот надо некое значение из массива и удалить.
Теперь в коде - возле каждого продукта имеется ссылка DELETE. После клика по такой ссылке в адресной строке прописывается следующее
_http://www.ХХХ.com/cart.php?del=14&PHPSESSID=06216ff994e8879fbb2e48e611c00927
В ней del=14 - это признак удаления из корзины товара с идентификатором 14
PHP:
if (isset($del))
{
unset($_SESSION["products"][$del]);
}
Поскольку с сессиями у меня всегда бошка не дружила

-~{}~ 02.10.05 16:57:
С первой частью вопроса уже разобрался самостоятельно ...
Осталась вторая - удаление ...