/** * Получение из БД и подсчёт данных, необходимых для отображения страницы с информацией о товарах в корзине/ */ function get_full_cart_data() { $products = get_product_data_from_cart(); // Общая стоимость товаров в корзине $total_cost = 0; // Общее количество товаров в корзине $total_quantity = 0; // В цикле обойдём массив с информацией о товарах foreach ($products as &$product) { // Количество данного товара, находящееся в корзине $product_quantity_at_cart = $_SESSION['cart'][$product['id']]; // Суммарная стоимость за всё количество данного товара в корзине $product_price_at_cart = $product['price'] * $product_quantity_at_cart; // Добавим два значения в массив с информацией о конкретном товаре: // quantity_at_cart - общее количество единиц товара в корзине // total_price_at_cart - суммарная стоимость за всё количество данного товара в корзине $product['quantity_at_cart'] = $product_quantity_at_cart; $product['total_price_at_cart'] = $product_price_at_cart; // прибавим к суммарным переменным данные о каждом товаре $total_quantity += $product_quantity_at_cart; $total_cost += $product_price_at_cart; } // Вернём массив данных, которые могут быть переданы в шаблон return array('products' => $products, 'total_quantity' => $total_quantity, 'total_cost' => $total_cost); }
<?php if (strtolower($_SERVER['REQUEST_METHOD']) !== 'post') { exit; } if (!is_logged_in()) { add_notification('Оформление заказа доступно только авторизованным пользователям.'); browser_redirect('signup'); exit; } if (empty($_SESSION['cart'])) { add_notification('Ваша корзина пуста.'); browser_redirect('homepage'); exit; } $products = get_product_data_from_cart(); $overhead_quantity_products = array(); foreach ($products as &$product) { $product['quantity_at_cart'] = $_SESSION['cart'][$product['id']]; if ($product['quantity_at_cart'] > $product['quantity']) { $overhead_quantity_products[] = $product['title']; } } unset($product); if (!empty($overhead_quantity_products)) { $overhead_quantity_products = array_map(function ($product_title) { return '"' . $product_title . '"'; }, $overhead_quantity_products); add_notification('Для товаров ' . implode(', ', $overhead_quantity_products) . ' недостаточен остаток.'); browser_redirect('cart'); exit;