Когда пользователь попадает на страницу show_cart.php в результате щелчка на кнопке Добавить в корзину, перед выводом содержимого тележки необходимо выполнить определенную подготовительную работу. В частности в тележку следует поместить соответствующий элемент.
Во-первых, если посетитель пока еще ничего не помещал в тележку, то собственно тележки и нет, поэтому ее необходимо создать:
if(!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
$_SESSION['items'] = 0;
$_SESSION['total_price'] ='0.00';
}
Поначалу тележка пуста.
Во-вторых, когда известно, что тележка создана, в нее можно добавить элемент:
if(isset($_SESSION['cart'][$new]))
$_SESSION['cart'][$new]++;
else
$_SESSION['cart'][$new] = 1;
Здесь мы проверяем, не содержится ли данный товар в тележке. Если это так, количество данного товара увеличивается на единицу, в противном случае в тележку добавляется новый элемент.
В-третьих, мы должны определить общую сумму заказа и количество товаров в тележке. Для этого применяются функции calculate_price() и calculate_iyems():
$_SESSION['total_price'] = calculate_price($_SESSION['cart']);
$_SESSION['items'] = calculate_items($_SESSION['cart']);
Эта функция содержится в библиотеке book_fns.php.
Функция calculate_price() — вычисляет и возвращает общую стоимость содержимого тележки для покупок
<?php
function calculate_price($cart)
{
// Вычисляет общую стоимость всех элементов тележки
$price = 0.0;
if(is_array
($cart)){
$conn = db_connect();
foreach($cart as $isbn => $qty)
{
$query = "select price from books where isbn='$isbn'";
$result = $conn->query($query);
if ($result)
{
$item = $result->fetch_object();
$item_price = $item->price;
$price +=$item_price*$qty;
}
}
}
return $price;
}
?>
Несложно заметить, что функция calculate_price() выполняет поиск в базе данных цены каждого элемента, помещенного в тележку. Этот процесс требует времени, поэтому, чтобы не повторять его чаще, нежели это необходимо, цена(равно как и общее количество элементов) сохраняется в переменных сеанса. Повторные вычисления выполняются только в случаях, когда содержимое тележки изменяется.
Функция calculate_items() — вычисляет и возвращает общее количество элементов в тележке
<?php
function calculate_items($cart)
{
// Подсчитывает общее количество элементов в тележке
$items = 0;
if(is_array
($cart)){
$items=array_sum($cart);
}
return $items;
}
?>
Функция calculate_items() намного проще — она лишь суммирует количество всех элементов тележки с целью получения итогового значения. При этом вызывается функция array_sum(). Если массива еще нет (тележка пуста), функция calculate_items() возвращает 0.
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться