我在更新购物车数量时遇到问题,点击+或 - 按钮增加或减少商品数量,每件商品的数量都会受到影响。 以下是页面http://prntscr.com/7wc9ar
的屏幕截图我已经从https://www.codeofaninja.com/2013/04/shopping-cart-in-php.html获得帮助以制作此购物车
这是我的代码
Cart.php
<?php
require_once("includes/initialize.php");
$action = isset($_GET['action']) ? $_GET['action'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";
$qty = isset($_SESSION['qty']) ? $_SESSION['qty'] : 1;
require_once("includes/header.php");
?>
<section id="cart_items">
<div class="container">
<div class="breadcrumbs">
<ol class="breadcrumb">
<li><a href="#">Home</a></li>
<li class="active">Shopping Cart</li>
</ol>
</div>
<?php
if ($action == 'removed') {
echo "<div class='alert alert-info'>";
echo "<strong>{$name}</strong> was removed from your cart!";
echo "</div>";
}
else if ($action == 'quantity_updated') {
echo "<div class='alert alert-info'>";
echo "<strong>{$name}</strong> quantity was updated! {$qty}";
echo "</div>";
}
if (isset($_SESSION["cart_items"]) && count($_SESSION['cart_items']) > 0)
{
// get the product ids
$ids = "";
foreach ($_SESSION['cart_items'] as $id => $value) {
$ids = $ids . $id . ",";
}
// remove the last comma
$ids = rtrim($ids, ',');
?>
<div class="table-responsive cart_info">
<table class="table table-condensed">
<thead>
<tr class="cart_menu">
<td class="image">Item</td>
<td class="description"></td>
<td class="price">Price</td>
<td class="quantity">Quantity</td>
<td class="total">Total</td>
<td></td>
</tr>
</thead>
<tbody>
<?php
$query = "SELECT * FROM products WHERE id IN ({$ids}) ORDER BY productName";
$result = $database->query($query);
$total_price = 0;
while ($row = $database->fetchArray($result)) {
?>
<tr>
<td class="cart_product">
<a href="#"><img src="images/products/<?php echo $row['productImageName'] ?>" height="100"
width="100" alt=""></a>
</td>
<td class="cart_description">
<h4><a href="#"><?php echo $row["productName"] ?></a></h4>
<p>Web ID: 1089772</p>
</td>
<td class="cart_price">
<?php $price = $row["productPrice"] ?>
<p>PKR <?php echo $price ?></p>
</td>
<td class="cart_quantity">
<div class="cart_quantity_button">
<?php
$id = $row["id"];
$name = $row["productName"];
?>
<a class="cart_quantity_down" href="<?php echo "decreaseQty.php?id={$id}&name={$name}&qty={$qty}"; ?>"> - </a>
<!--<a class="cart_quantity_down" href=""> - </a>-->
<input class="cart_quantity_input" type="text" name="quantity" value="<?php echo $_SESSION['qty']; ?>"
autocomplete="off" size="2">
<a class="cart_quantity_up" href="<?php echo "increaseQty.php?id={$id}&name={$name}&qty={$qty}"; ?>"> + </a>
<!--<a class="cart_quantity_up" href=""> + </a>-->
</div>
</td>
<td class="cart_total">
<p class="cart_total_price">PKR <?php echo $price * $qty ?></p>
</td>
<td class="cart_delete">
<?php
$id = $row["id"];
$name = $row["productName"];
echo "<a href='removeFromCart.php?id={$id}&name={$name}' class='cart_quantity_delete'><i class=\"fa fa-times\"></i></a>";
?>
<!--<a class="cart_quantity_delete" href="#"><i class="fa fa-times"></i></a>-->
</td>
</tr>
<?php
$total_price += $price * $qty;
}
?>
</tbody>
</table>
</div>
<?php
}
else
{
echo "<div class='alert alert-danger'>";
echo "<strong>No products found</strong> in your cart!";
echo "</div>";
}
?>
</div>
</section> <!--/#cart_items-->
<section id="do_action">
<div class="container">
<div class="heading">
<h3>What would you like to do next?</h3>
<p>Choose if you have a discount code or reward points you want to use or would like to estimate your
delivery cost.</p>
</div>
<div class="row">
<div class="col-sm-6">
<div class="chose_area">
<ul class="user_option">
<li>
<input type="checkbox">
<label>Use Coupon Code</label>
</li>
<li>
<input type="checkbox">
<label>Use Gift Voucher</label>
</li>
<li>
<input type="checkbox">
<label>Estimate Shipping & Taxes</label>
</li>
</ul>
<ul class="user_info">
<li class="single_field">
<label>Country:</label>
<select>
<option>United States</option>
<option>Bangladesh</option>
<option>UK</option>
<option>India</option>
<option>Pakistan</option>
<option>Ucrane</option>
<option>Canada</option>
<option>Dubai</option>
</select>
</li>
<li class="single_field">
<label>Region / State:</label>
<select>
<option>Select</option>
<option>Dhaka</option>
<option>London</option>
<option>Dillih</option>
<option>Lahore</option>
<option>Alaska</option>
<option>Canada</option>
<option>Dubai</option>
</select>
</li>
<li class="single_field zip-field">
<label>Zip Code:</label>
<input type="text">
</li>
</ul>
<a class="btn btn-default update" href="">Get Quotes</a>
<a class="btn btn-default check_out" href="">Continue</a>
</div>
</div>
<div class="col-sm-6">
<div class="total_area">
<ul>
<?php
if(!isset($total_price))
{
$total_price = 0;
}
?>
<li>Cart Sub Total <span>PKR <?php echo $total_price ?></span></li>
<li>Eco Tax <span>NO Tax</span></li>
<li>Shipping Cost <span>PKR 200</span></li>
<?php
if($total_price == 0)
{
$total_price = 0;
}
else
{
$total_price += 200;
}
?>
<li>Total <span>PKR <?php echo $total_price ?></span></li>
</ul>
<a class="btn btn-default update" href="">Update</a>
<a class="btn btn-default check_out" href="">Check Out</a>
</div>
</div>
</div>
</div>
</section><!--/#do_action-->
<?php require_once("includes/footer.php"); ?>
&#13;
increaseQty.php
<?php
require_once("includes/initialize.php");
// get the product id
$id = isset($_GET['id']) ? $_GET['id'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";
$qty = isset($_GET['qty']) ? $_GET['qty'] : "";
$qty++;
$_SESSION['qty'] = $qty;
reDirectTo("cart.php?action=quantity_updated&id=" . $id . '&name=' . $name.'&qty=' . $qty);
?>
&#13;
decreaseQty.php
<?php
require_once("includes/initialize.php");
// get the product id
$id = isset($_GET['id']) ? $_GET['id'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";
$qty = isset($_GET['qty']) ? $_GET['qty'] : "";
$qty--;
$_SESSION['qty'] = $qty;
reDirectTo("cart.php?action=quantity_updated&id=" . $id . '&name=' . $name.'&qty=' . $qty);
?>
&#13;
请帮我解决此数量更新问题。如果无法通过会话处理,请引导我找到不同的解决方案。
答案 0 :(得分:0)
在您的代码中,没有基于特定产品的数量。数量已分配给会话变量$_SESSION['qty']
。如果您想根据个别产品存储购物车商品。您应该使用一系列信息保存它。
例如。
$_SESSION['cart'] = array(
$productid => array(
'product_name' => $productname,
'productId' => $productid,
'quantity' => $productquantity
),
);