php购物车,堆栈数量

时间:2020-03-23 15:17:38

标签: php

我正在制作一个php购物车,您在其中添加产品,然后,订单详细信息(例如产品的名称,数量和价格)与订单总数一起显示在页面底部。我要这样做,以便当您添加已经添加到购物车的产品时,它可以堆叠数量。例如,如果您有一个价格为5美元且数量为1的红色杯子产品,然后再将其数量为2的产品再次添加到购物车中,则订单明细部分显示红色杯子,数量为3的价格15美元。我正在使用一个会话变量来存储购物车的产品及其详细信息。

这是创建会话的代码块,我知道我必须在else语句中写一些东西,但是我不知道如何获取购物车中元素的价格:

<?php
//session_unset();
//session_destroy();
if(isset($_POST["addtocart"])) {
    //var_dump($_SESSION["cart"]);
    $_SESSION["cos"] = array_values($_SESSION["cart"]);
    if(isset($_SESSION["cart"])) {
        $item_array_id=array_column($_SESSION["cart"],"id");
        $item_array_cant=array_column($_SESSION["cart"],"cantitate");

        if(!in_array($_POST["id"],$item_array_id)) {
            $count=count($_SESSION["cart"]);
            $item_array=array(
                             'id'  => $_POST["id"],
                             'name'   => $_POST["hidden_name"],
                             'price'       => $_POST["hidden_price"],
                             'quantity'  => $_POST["quantity"]
                    );
            $_SESSION["cart"][$count]=$item_array;
        }
           **else** 
           {


           }

    } else {
        $item_array=array( 
                         'id'  => $_POST["id"],
                         'name'   => $_POST["hidden_name"],
                         'price'       => $_POST["hidden_price"],
                         'quantity'  => $_POST["quantity"]
            );
        $_SESSION["cart"][0]=$item_array;
    }
}

if(isset($_GET['action'])){
    if($_GET['action']=="delete"){
        for($i=0;$i<count($_SESSION["cart"]);$i++) {
            if($i==$_GET['id']) {
                unset($_SESSION["cart"][$i]);
            }
        }
        $_SESSION["cart"] = array_values($_SESSION["cart"]);

    }
}
?> 

1 个答案:

答案 0 :(得分:0)

如果您将id用作购物车数组的键,那么找到重复项并添加到价格中将非常容易。

<?php

if(isset($_POST["addtocart"])) {
    if(isset($_SESSION["cart"])) {

        $cart = $_SESSION['cart'];     // just make addressing the cart easier

        if(!isset($cart[$_POST['id']]) ) {
            $cart[$_POST['id']] = ['id'  => $_POST["id"],
                                   'name'   => $_POST["hidden_name"],
                                   'price'       => $_POST["hidden_price"],
                                   'quantity'  => $_POST["quantity"]
                                   ];
        } else {
            // get current quantity from cart and add new quantity
            $q = $cart[$_POST['id']]['quantity'] + $_POST["quantity"];
            $cart[$_POST['id']]['quantity'] = $q;
            $cart[$_POST['id']]['price'] = $q * $_POST["hidden_price"];
        }

    } else {
        $_SESSION['cart'][$_POST['id']] = ['id'  => $_POST["id"],
                                           'name'   => $_POST["hidden_name"],
                                           'price'       => $_POST["hidden_price"],
                                           'quantity'  => $_POST["quantity"]
                                           ];
    }
}