Кол-во не обновляется - PullRequest
       11

Кол-во не обновляется

0 голосов
/ 15 апреля 2019

Я пытаюсь настроить базовую сессию корзины и добавить товары.У меня все работает, кроме добавления одного и того же элемента, оно не обновляет количество последовательно.

Я заметил, что если я добавлю только один продукт в массив и попытаюсь добавить тот же самый снова,это увеличивает.Но как только есть 2 или более различных продукта, добавление существующего не обновляет количество, а добавляет целую запись в массиве.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

причина в том, что при слиянии используется array_merge.это займет только элементы, а не ключи.

if(!empty($_POST["p_quantity"])) {
                $productById = queryFunc("SELECT * FROM products WHERE product_id='" . $_GET["prid"] . "'");


                $productArray = array('productid'=>$productById[0]["product_id"], 'name'=>$productById[0]["product_name"], 'quantity'=>$_POST["p_quantity"], 'price'=>$productById[0]["unit_price"], 'weight'=>$productById[0]["unit_quantity"]);

                if(!empty($_SESSION["shopping_cart"])) {
                    if(in_array($productById[0]["product_id"],array_keys($_SESSION["shopping_cart"]))) {
                        foreach($_SESSION["shopping_cart"] as $keys => $values) {
                                if($productById[0]["product_id"] == $keys) {
                                    if(empty($_SESSION["shopping_cart"][$keys]["quantity"])) {
                                        $_SESSION["shopping_cart"][$keys]["quantity"] = 0;
                                    }
                                    $_SESSION["shopping_cart"][$keys]["quantity"] = $_SESSION["shopping_cart"][$keys]["quantity"] + $_POST["p_quantity"];
                                }
                        }
                    } else {
                        $_SESSION["shopping_cart"][$productById[0]["product_id"]] = $productArray;
                    }
                } else {
                    $_SESSION["shopping_cart"] = array();
                    $_SESSION["shopping_cart"][$productById[0]["product_id"] = $productArray;
                }
            }
1 голос
/ 15 апреля 2019

Я бы предложил изменить структуру корзины: вместо того, чтобы просто добавить товар в корзину, как

$shopping_cart[] = Array
            (
                "productid" => $productId,
                "name" => "Fish Food",
                "quantity" => "3",
                "price" => "3.00",
                "weight" => "500g packet"
            );

, добавьте его так:

$shopping_cart[$productId] = Array
            (
                "productid" => $productId,
                "name" => "Fish Food",
                "quantity" => "3",
                "price" => "3.00",
                "weight" => "500g packet"
            );

и более поздниеВы можете проверить, находится ли продукт в корзине или нет, просто используя isset($shopingcart[$product_id]) или другие функции массива, если хотите.

...