簡體   English   中英

為一種產品更新購物車中的數量會重置之前更新的其他產品的數量

[英]Updating quantity in shopping cart for one product resets the previously updated quantity of other products

我設法使用下拉數量菜單和this.form.submit()更改我的購物車中一種產品的數量,但是如果我的購物車中有兩種產品的數量已更新,我決定再次更新其中一種其他產品的數量會被覆蓋並恢復到其先前的原始值(更新前),該值是使用列出所有產品的頁面上的“添加到購物籃”發送的。

當我更新一個產品的數量時,如何保留其他產品已經更新的數量?

<?php
// Add products to basket:

if (!isset($_SESSION['basket'])) {
  $_SESSION['basket'] = array();
}

if (isset($_POST['id'])) {
  $_SESSION['basket'][$_POST['id']] = array(
    'product_id'=>$_POST['id'],
    'product_photo'=>$_POST['hidden_photo'],
    'product_photo_alt'=>$_POST['hidden_photo_alt'],
    'product_name'=>$_POST['hidden_name'],
    'product_price'=>$_POST['hidden_price'],
    'product_quantity'=>$_POST['quantity'],
  );
}
?>

<?php
// 
 if(!empty($_SESSION['basket'])) {
   $total = 0;
   foreach ($_SESSION['basket'] as $key => $value) {
// Below is the code which updates the quantity of a product with a particular id
// But after submitting the form resetes the quantity of other products 
// With already updated quantity 
     if (!empty($_POST['new_qty'][$value['product_id']])) {
       $quantity = $_POST['new_qty'][$value['product_id']];
     } else {
       $quantity = $value['product_quantity'];
     }
?>

<form method="post" action="">
<select class="quantity-basket" name="new_qty[<?php echo $value['product_id']; ?>]" onchange="this.form.submit()">

<?php
// Quantity added to the basket:                        
if ($quantity) {
?>

<option value="<?php echo $quantity; ?>" hidden><?php echo $quantity; ?></option>

<?php
}
?>

<?php
// Drop-down quantity menu
for ($i = 0; $i <=50; $i++) {
?>

<option value="<?php echo ($i == 0) ? $i . ' (Remove)' : $i; ?>">

<?php echo ($i == 0) ? $i . ' (Remove)' : $i; ?>

</option>

<?php
}
?>

</select>
<!-- End of quantity drop-down menu -->
</form>

購物車截圖

感謝本教程,我已將其整理出來: https://www.allphptricks.com/simple-shopping-cart-using-php-and-mysql/#comment-79810

<?php

if (!isset($_SESSION['basket'])) {
  $_SESSION['basket'] = array();
}

if (isset($_POST['id'])) {
  $_SESSION['basket'][$_POST['id']] = array(
    'product_id'=>$_POST['id'],
    'product_photo'=>$_POST['hidden_photo'],
    'product_photo_alt'=>$_POST['hidden_photo_alt'],
    'product_name'=>$_POST['hidden_name'],
    'product_price'=>$_POST['hidden_price'],
    'product_quantity'=>$_POST['quantity'],
  );
}

// Update quantity
if (isset($_POST['action']) && $_POST['action'] == 'update') {
  foreach($_SESSION['basket'] as &$value) {
    if($value['product_id'] === $_POST['type']) {
        $value['product_quantity'] = $_POST['new_qty'];
        break; // Stop the loop after we've found the product
    }
  }
}
?>

<?php
// 
 if(!empty($_SESSION['basket'])) {
   $total = 0;
   foreach ($_SESSION['basket'] as $product) {
?>

<form method="post" action="">
<input type="hidden" name="type" value='<?php echo $product["product_id"]; ?>'>
<input type="hidden" name="action" value="update">
<select class="quantity-basket" name="new_qty" onchange="this.form.submit()">
<option value="<?php echo $product['product_quantity']; ?>" hidden><?php echo $product['product_quantity']; ?></option>

<?php
// Drop-down quantity menu
for ($i = 0; $i <=50; $i++) {
?>

<option value="<?php echo ($i == 0) ? $i . ' (Remove)' : $i; ?>">

<?php echo ($i == 0) ? $i . ' (Remove)' : $i; ?>

</option>

<?php
}
?>

</select>
</form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM