Не сохраняется элемент массива в сессии PHP

129
05 января 2022, 07:10

у меня есть корзина с товарами, я делаю проверку при добавлении товара на его наличие в корзине, если он существует - увеличивается количество добавленного товара.

  if(isset($_POST['add'])){
    echo "<script>window.location='shop.php'</script>";
    if(isset($_SESSION['cart'])){
        $item_array_id = array_column($_SESSION['cart'], 'item_id');
        if(!in_array($_GET['id'],$item_array_id)){
            $count = count($_SESSION['cart']);
            $item_array = array(
                'item_id' => $_POST['hidden_id'],
                'item_img' => $_POST['hidden_img'],
                'item_name' => $_POST['hidden_name'],
                'item_price' => $_POST['hidden_price'],
                'item_count' => $_POST['count']
            );
            $_SESSION['cart'][$count] = $item_array;
            // echo "<script>window.location='shopcart.php'</script>";
        }
        else{
            foreach($_SESSION['cart'] as $keys => $value){
                if($value['item_id'] == $_GET['id']){
                    $value['item_count'] += $_POST['count'];
                    logReq($value['item_count']);
                }
            }
        } 
    }

Я попадаю в условие else и все операции отрабатывают, но я сталкиваюсь с тем, что $value['item_count'] не сохраняется. Как решить этот вопрос?

Answer 1

Думаю этот код тебе поможет

 <?php
    class Cart
    {
        public static function addProduct($id,$count = 1)
        {
            $id = intval($id);
            $productsInCart = array();
            if (isset($_SESSION['products'])) {
                $productsInCart = $_SESSION['products'];
            }
            if (array_key_exists($id, $productsInCart)){
                $productsInCart[$id] += $count;
            } else {
                $productsInCart[$id] = $count;
            }
            $_SESSION['products'] = $productsInCart;
            return self::countItems();
        }
        public static function countItems()
        {
            if (isset($_SESSION['products'])) {
                $count = 0;
                foreach ($_SESSION['products'] as $id => $quantity) {
                    $count = $count + $quantity;
                }
                return $count;
            } else {
                return 0;
            }
        }
        public static function getProducts()
        {
            if (isset($_SESSION['products'])) {
                return $_SESSION['products'];
            }
            return false;
        }
        public static function clear()
        {
            if (isset($_SESSION['products'])) {
                unset($_SESSION['products']);
            }
        }
        public static function deleteProduct($id)
        {
            $productsInCart = self::getProducts();
            unset($productsInCart[$id]);
            $_SESSION['products'] = $productsInCart;
        }
    }

https://webzone.kz/kz/publication/php-session

READ ALSO
равны ли все значения в массиве PHP

равны ли все значения в массиве PHP

Есть массив со структурой -

199
Обнаружено нечисловое значение

Обнаружено нечисловое значение

Вроде код правильный, но пишет ошибку

227
Не стабильная работа google капчи

Не стабильная работа google капчи

Установил Google Recaptcha v3

97
Разбиение месяца по неделям в PHP

Разбиение месяца по неделям в PHP

Нужно вывести статистику по неделямДля этого желателен массив с неделями по дням

110