我一直在关注ecom网络教程,我一直在多次更改代码,但仍然没有做到正确。问题是根据产品数量而不是产品ID更改购物车旁边的回显数字
Shop.php代码:
<a href="#tab2">CART <span class="badge">
<?php
if(isset($_SESSION["shopping_cart"])) {
echo count($_SESSION["shopping_cart"]);
} else {
echo '0';}
?>
</span></a>
action.php代码:
<?php
if (isset($_POST["product_id"])) {
$order_table = '';
$message = '';
if ($_POST["action"] == "add") {
if (isset($_SESSION["shopping_cart"])) {
$is_available = 0;
foreach ($_SESSION["shopping_cart"] as $keys => $values) {
if ($_SESSION["shopping_cart"][$keys]['product_id'] == $_POST["product_id"]) {
$is_available++;
$_SESSION["shopping_cart"][$keys]['product_quantity'] = $_SESSION["shopping_cart"][$keys]['product_quantity'] + $_POST["product_quantity"];
}
}
if ($is_available < 1) {
$item_array = array(
'product_id' => $_POST["product_id"],
'product_name' => $_POST["product_name"],
'product_price' => $_POST["product_price"],
'product_quantity' => $_POST["product_quantity"]
);
$_SESSION["shopping_cart"][] = $item_array;
}
} else {
$item_array = array(
'product_id' => $_POST["product_id"],
'product_name' => $_POST["product_name"],
'product_price' => $_POST["product_price"],
'product_quantity' => $_POST["product_quantity"]
);
$_SESSION["shopping_cart"][] = $item_array;
}
}
}
?>
答案 0 :(得分:0)
您希望使用循环来存储购物车中每件商品的数量:
function getCartQty()
{
# If there is nothing in the cart, return 0
if(empty($_SESSION['shopping_cart']))
return 0;
# Store array
$qty = array();
# Loop items in cart
foreach($_SESSION["shopping_cart"] as $item){
# Store the quantity of each item
$qty[] = $item['product_quantity'];
}
# Return the sum
return array_sum($qty);
}
?>
<a href="#tab2">CART <span class="badge"><?php echo getCartQty() ?></span></a>
答案 1 :(得分:0)
count()
将返回数组中的元素数。在存储在$ _SESSION数组中的购物车阵列上运行时,您将计算唯一产品的数量。
由于每个产品都有数量值,您需要检索它们的总和。这是一个可用于执行该计算的函数:
function my_shopping_cart_total_product_count() {
$product_count = 0;
if ( isset( $_SESSION['shopping_cart'] ) ) {
$product_count = array_sum( array_column( $_SESSION['shopping_cart'], 'product_quantity' ) );
}
return $product_count;
}
在上面的示例中,我使用array_column
来获取包含所有产品数量的数组。然后我通过array_sum
运行它以获得总数。你当然可以简单地使用foreach循环。
<强>用法:强>
<a href="#tab2">CART <span class="badge"><?php echo my_shopping_cart_total_product_count(); ?></span></a>
<强>文档强>
附加说明:
action.php中的代码非常令人担忧。似乎缺乏用户输入清理。我建议研究数据清理以提高安全性。
答案 2 :(得分:0)
您可以更改Magento后端中的设置以获取项目总数而不是不同产品的数量:
这适用于默认的Magento主题,因此您可以使其适用于您自己的主题。
答案 3 :(得分:0)
你也可以试试这个:
# return shopping cart items count means how many sku add to shopping cart
Mage::helper('checkout/cart')->getItemCount()
# return shopping cart items summary (suppose you add sku1 6 qty and sku2 3 qty = total 9 qty return)
Mage::helper('checkout/cart')->getSummaryCount()
来源:https://magento.stackexchange.com/a/23496/46249
注意:不要在Magento中使用$_SESSION
,还有其他方法。