Intereting Posts
Максимальное и минимальное целое из массива, исключая значения NULL или ZERO Как принять cookie с iPhone, страницу входа в систему как передать переменную php в jquery Doctrine – как получить запрос SQL INSERT в событии postSave ()? Как выполнить запрос MySQL с несколькими предложениями WHERE? Обязательное полевое сообщение об ошибке на форме Назначение массива php путем копирования значения или ссылки? Laravel 5.4 Сброс пароля Сокращение для массивов: существует литальный синтаксис, например {} или ? Загрузка файла в почтовом расширении Несколько запросов на сокет TCP на PHP Как отобразить ошибку, когда загруженные файлы превышают post_max_size php? Параметр не передается методу контроллера в laravel при использовании метода маршрута Imagick не открывает PDF-файлы с исключением «Не удалось прочитать файл» Как заполнить значение типа входного файла из базы данных в PHP?

Невозможность настроить сумму товара

Привет, я использую код ниже, чтобы проверить, находится ли элемент с тем же pid, длиной и категорией уже в корзине покупок, и если это так, он должен отрегулировать количество товара. Проблема в том, что если вы добавляете элемент с тем же pid, длиной и категорией, вместо увеличения количества. Он добавляется в корзину покупок как новый продукт.

NOTE: An item has the same pid but it comes in different sizes and category. if (isset($_POST['pid'])) { $pid = $_POST['pid']; $length = $_POST["size"]; $qty = $_POST['Qty']; $Category = $_POST['Category']; $wasFound = false; $i = 0; if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { $_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $qty)); } else { foreach ($_SESSION["cart_array"] as $each_item) { $i++; while (list($key, $value, $ilength, $pcategory) = each($each_item)) { if ($key == "item_id" && $ilength == $length && $pcategory == $Category && $value == $pid) { array_splice($_SESSION["cart_array"], $i-1, 1, array(array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $each_item['quantity'] + 1))); $wasFound = true; } } } if ($wasFound == false) { array_push($_SESSION["cart_array"], array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $qty)); } } header("location: cart.php"); exit(); } ?> 

Я бы попробовал это;) обновленный и протестированный код

 foreach ($_SESSION["cart_array"] as $array_key=>$each_item) { if ($each_item['item_id'] == $pid && $each_item['length'] == $length && $each_item['Category'] == $Category) { $_SESSION["cart_array"][$array_key]['quantity']+=$qty; $wasFound = true; } } 

Попробуй это…

 if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { $_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $qty)); } else { foreach ($_SESSION["cart_array"] as $key=>$each_item) { if(($each_item['item_id']==$pid && ($each_item['length']==$length)&&($each_item['Category']==$Category)){ $_SESSION["cart_array"][$key]['quantity']++; $wasFound = true; $wasFound = true; } } if ($wasFound == false) { array_splice($_SESSION["cart_array"], array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $qty)); } } header("location: cart.php"); exit(); }