Итак, продолжаем разработку функциональности корзины нашего интернет магазин. Возможность положить товар в корзину у нас уже есть, однако мы еще не можем обновлять количество товара, удалять товары из корзины и подсчитывать сумму корзины.
Первая функция, которая нам пригодится, назовем ее remove_from_cart(), и она будет удалять товар из корзины. Вот пример такой функции:
function remove_from_cart($delete_key) { unset($_SESSION['product_id'][$delete_key]); unset($_SESSION['product_price'][$delete_key]); unset($_SESSION['product_count'][$delete_key]); $_SESSION['prod_count']=$_SESSION['prod_count']-1; sort($_SESSION['product_id']); sort($_SESSION['product_price']); sort($_SESSION['product_count']); update_cart_sum(); }
А теперь по порядку. Обязательный параметр функции - $delete_key, откуда он берется и чему соответствует, я опишу ниже. Первые три строки удаляют переменные, соответствующие товару в корзине (я надеюсь вы знакомы с функцией unset). Следующая строка: $_SESSION['prod_count']=$_SESSION['prod_count']-1
уменьшает количество товаров в корзине на 1.
Следующие три строки сортируют массивы идентификаторов продуктов, цен и количеств. Функция sort выполняет сортировку массива с изменением ключей. Ее действие можно проиллюстрировать следующим примером. Допустим у нас есть массив чисел array(0=>’1’, 1=>’12’, 3=>’11’, 6=>’23’). После применения функции sort к такому массиву получится новый массив array(0=>’1’, 1=>’12’, 2=>’11’, 3=>’23’). Зачем такие сложности? Немного терпения и все будет понятно.
Ну и последняя строка update_cart_sum() – вызов некой функции, по названию которой можно понять, что она выполняет обновление суммы корзины. Поскольку эта функция довольно проста, я сразу приведу ее код:
function update_cart_sum() { $_SESSION['cart_sum']=0; for ($i=0; $i<$_SESSION['prod_count']; $i++) { $_SESSION['cart_sum']=$_SESSION['cart_sum'] + $_SESSION['product_price'][$i]* $_SESSION['product_count'][$i]; } }Тут совсем просто. В начале обнуляем сумму корзины, затем обходим циклом все товары и складываем их цены помноженные на их количество. Обратите внимание, что данную функцию нужно запускать при любых действиях с корзиной, т.е. ее вызов нужно добавить в конце функции addtocart() описанной в статье Интернет магазин. Корзина на PHP (часть 2).
function update_cart($cnt, $update_key) { $_SESSION['product_count'][$update_key]=$cnt; update_cart_sum(); }
Обязательные параметры - $cnt – новое количество товара и $update_key – ключ массива, соответствующий номеру товара в многомерных массивах $_SESSION['product_id'], $_SESSION['product_price'], $_SESSION['product_count']. Первая строка изменяет количество товара, вторая – вызов уже знакомой функции update_cart_sum().
Что дальше? В следующей статье нужно будет собрать все в одном файле, который будет отвечать за связь наших функций с действиями пользователей.
© 2010-2024 При использовании материалов ссылка на сайт www.webchaynik.ru обязательна