首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 購物車實作:結合 Cookie 與陣列管理商品資料

     編輯:PHP 綜合知識

設計思路

利用 Cookie 儲存序列化的二維陣列,第一維代表每個商品,第二維包含商品 ID、數量、價格等屬性。所有操作(新增、修改、刪除、清空)皆針對 Cookie 中的陣列進行,處理完畢再序列化寫回 Cookie。

核心函數

1. 加入購物車 addcart($goods_id, $goods_num)

function addcart($goods_id, $goods_num) {
    $cur_cart_array = unserialize(stripslashes($_COOKIE['shop_cart_info']));

    if (empty($cur_cart_array)) {
        // 首次加入,建立新陣列
        $cart_info[0][] = $goods_id;
        $cart_info[0][] = $goods_num;
        setcookie("shop_cart_info", serialize($cart_info));
    } else {
        // 檢查是否已存在相同商品
        foreach ($cur_cart_array as $goods_current_cart) {
            foreach ($goods_current_cart as $key => $goods_current_id) {
                if ($key == 0 && $goods_current_id == $goods_id) {
                    echo "<script>if(confirm('購物車已有該商品,繼續購物按確定,查看購物車按取消')){history.go(-1)}else{window.location.href='xqs_cart.php'}</script>";
                    exit();
                }
            }
        }
        // 取得最大鍵值 +1 作為新索引
        $ar_keys = array_keys($cur_cart_array);
        rsort($ar_keys);
        $max_array_keyid = $ar_keys[0] + 1;

        $cur_cart_array[$max_array_keyid][] = $goods_id;
        $cur_cart_array[$max_array_keyid][] = $goods_num;
        setcookie("shop_cart_info", serialize($cur_cart_array));
    }
}

2. 刪除商品 delcart($goods_array_id)

function delcart($goods_array_id) {
    $cur_goods_array = unserialize(stripslashes($_COOKIE['shop_cart_info']));
    unset($cur_goods_array[$goods_array_id]);
    setcookie("shop_cart_info", serialize($cur_goods_array));
}

3. 更新數量 update_cart($up_id, $up_num, $goods_ids)

function update_cart($up_id, $up_num, $goods_ids) {
    // 先清空 Cookie,以便處理數量為 0 的商品
    setcookie("shop_cart_info", "");

    foreach ($up_id as $song) {
        $goods_nums = current($up_num);
        $goods_id   = current($goods_ids);
        next($up_num);
        next($goods_ids);

        // 數量為 0 時移除該項
        if ($goods_nums == 0) {
            unset($song);
            continue;
        }

        $cur_goods_array[$song][0] = $goods_id;
        $cur_goods_array[$song][1] = $goods_nums;
    }
    setcookie("shop_cart_info", serialize($cur_goods_array));
}

清空購物車

直接設定同名 Cookie 為空值:setcookie("shop_cart_info", "");

後續處理

形成訂單時,可根據業務需求(積分、現金獎勵等)將購物車資料寫入資料庫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved