php做的購物車,php實現購物車功能

本文目錄一覽:

php購物車怎麼實現

可以使用 session 或者 redis 來保存購物車信息。

具體代碼這裡不可能貼出來的。建議你下載一個開源的商城系統,看看別人是怎麼寫的。

PHP怎麼做購物車?

購物車有兩種實現方式,一種是保存在資料庫,另外一種是session

保存在資料庫的不會以為關閉瀏覽器而消失,session會因為關閉瀏覽器就沒有了。

原理是把每個商品的信息存到一個數組裡面,然後以這個商品的id作為鍵值,然後吧數組存到session裡面就行,

如果是存入資料庫的話,就用關聯數據存一下就行的

php怎麼用session做購物車

class cart

{

/**

* 函數名稱: addItem

* 函數功能: 添加商品

* 輸入參數: $data ————- 商品數組

* 函數返回值: none

* 其它說明: 因為數據是記錄在session中,所以不用返回

*/

function addItem($data){

global $config_kezhi;

if(is_array($data)!empty($data)){

foreach($data as $key=$val){

// 如果商品存在就加數量和價格

if($this-_isExists($key)){

$_SESSION[‘cart’][$key][“paddy_count”] += $val[‘paddy_count’];

$_SESSION[‘cart’][$key][“market_count”] += $val[‘market_count’];

$_SESSION[‘cart’][$key][“goodsnum”] += intval($val[‘goodsnum’]);

$arr = $this-getItems($key);

// $_SESSION[‘cart’][$key][“count”] += $_SESSION[‘cart’][$key][“price”];

/* if(strlen($_SESSION[‘cart’][$key][“kezhi”])0){//沒有刻字,加入刻字

$_SESSION[‘cart’][$key][“eng_price”]=0;

$_SESSION[‘cart’][$key][“eng_price”]=(int)$config_kezhi*intval($arr[‘num’]);

}else{

//die(“dd”);

$_SESSION[‘cart’][$key][“eng_price”]=0;

}*/

//echo $arr[‘num’];

//die();

}

// 否則直接加入

else

{

$_SESSION[‘cart’][$key] = $data[$key];

// $_SESSION[‘cart’][$key][“name”] = $val[‘name’];

// $_SESSION[‘cart’][$key][“price”] = $val[‘price’];

// $_SESSION[‘cart’][$key][“count”] = round($val[‘price’]*intval($val[‘num’]),2);

// $_SESSION[‘cart’][$key][“num”] = intval($val[‘num’]);

}

}

}

}

/**

* 函數名稱: _isExists

* 函數功能: 判斷此商品是否存在

* 輸入參數: $id ———- 商品ID

* 函數返回值: bool

* 其他說明: 2004-8-19

*/

function _isExists($id)

{

if(isset($_SESSION[‘cart’][$id])!empty($_SESSION[‘cart’][$id])array_key_exists($id,$_SESSION[‘cart’]))

{

Return true;

}

else

{

Return false;

}

}

/**

* 函數名稱: modItem

* 函數功能: 修改商品數量

* 輸入參數: $id ————– 商品ID

* $num ————- 商品數量

* 函數返回值: 返回值說明

* 其他說明: 說明

*/

function modItem($id,$num)

{

$arr = $this-getItems($id);

// 如果商品存在就加數量和價格

if($this-_isExists($id))

{

$_SESSION[‘cart’][$id][“goodsnum”] = intval($num);

if($arr[‘paddy_price_special’] “0”){

$_SESSION[‘cart’][$id][“paddy_count”] = round($arr[‘paddy_price_special’]*intval($num),2);

}elseif($arr[‘paddy_userprice’] “0”){

$_SESSION[‘cart’][$id][“paddy_count”] = round($arr[‘paddy_userprice’]*intval($num),2);

}elseif($arr[‘paddy_spreadprice’] “0”){

$_SESSION[‘cart’][$id][“paddy_count”] = round($arr[‘paddy_spreadprice’]*intval($num),2);

}else{

$_SESSION[‘cart’][$id][“paddy_count”] = round($arr[‘paddy_price’]*intval($num),2);

}

$_SESSION[‘cart’][$id][“market_count”] = round($arr[‘market_price’]*intval($num),2);

}

}

/**

* 函數名稱: modItem_wanwei

* 函數功能: 修改商品腕圍

* 輸入參數: $id ————– 商品ID

* $num ————- 商品腕圍

* 函數返回值: 返回值說明

* 其他說明: 說明

*/

function modItem_wanwei($id,$wanwei)

{

$arr = $this-getItems($id);

// 如果商品存在就加數量和價格

if($this-_isExists($id))

{

$_SESSION[‘cart’][$id][“wanwei”] = intval($wanwei);

///$_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($num),2);

}

}

// function modItem_kezhi($id,$kezhi)

// {

// global $config_kezhi;

// $arr = $this-getItems($id);

// // 如果商品存在就加數量和價格

// if($this-_isExists($id))

// {

// $_SESSION[‘cart’][$id][“kezhi”] = $kezhi;

// $_SESSION[‘cart’][$id][‘price’] = $arr[‘price’] + $config_kezhi;

// $_SESSION[‘cart’][$id][‘count’] = round($_SESSION[‘cart’][$id][‘price’]*intval($arr[‘num’]),2);

// }

// }

function modItem_kezhi($id,$kezhi,$kezhi1=””,$kezhi2=””)

{

global $config_kezhi;

$arr = $this-getItems($id);

// 如果商品存在就加數量和價格

//var_dump($_SESSION[‘cart’]);

// die();

if($this-_isExists($id))

{

if(strlen($_SESSION[‘cart’][$id][“kezhi”]) == 0 strlen($kezhi) != 0){//沒有刻字,加入刻字

//$arr[‘price’] += $config_kezhi;

$_SESSION[‘cart’][$id][“eng_price”]=0;

$_SESSION[‘cart’][$id][“eng_price”]=(int)$config_kezhi*intval($arr[‘num’]);

//$_SESSION[‘cart’][$id][“price”] = $arr[‘price’];

// $_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($arr[‘num’]),2);

$_SESSION[‘cart’][$id][“kezhi”] = $kezhi;

$_SESSION[‘cart’][$id][“kezhi1”] = $kezhi1;

$_SESSION[‘cart’][$id][“kezhi2”] = $kezhi2;

///$_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($num),2);

}elseif(strlen($_SESSION[‘cart’][$id][“kezhi”]) != 0 strlen($kezhi) == 0){//有刻字,去除刻字

$_SESSION[‘cart’][$id][“eng_price”]=0;

//$_SESSION[‘cart’][$id][“eng_price”]-=(int)$config_kezhi*intval($arr[‘num’]);

// $_SESSION[‘cart’][$id][“eng_price”]-=$config_kezhi;

//$_SESSION[‘cart’][$id][“price”] = $arr[‘price’];

//$_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($arr[‘num’]),2);

$_SESSION[‘cart’][$id][“kezhi”] = $kezhi;

$_SESSION[‘cart’][$id][“kezhi1”] = $kezhi1;

$_SESSION[‘cart’][$id][“kezhi2”] = $kezhi2;

}elseif(strlen($_SESSION[‘cart’][$id][“kezhi”]) != 0 strlen($kezhi) != 0){//有刻字,更改刻字

//$_SESSION[‘cart’][$id][“count”] = round($arr[‘price’]*intval($arr[‘num’]),2);

//$_SESSION[‘cart’][$id][“eng_price”]=0;

$_SESSION[‘cart’][$id][“eng_price”]=(int)$config_kezhi*intval($arr[‘num’]);

$_SESSION[‘cart’][$id][“kezhi”] = $kezhi;

$_SESSION[‘cart’][$id][“kezhi1”] = $kezhi1;

$_SESSION[‘cart’][$id][“kezhi2”] = $kezhi2;

}

}

}

/**

* 函數名稱: getItems

* 函數功能: 取得商品數組

* 輸入參數: $id ————— 某商品的ID

* 函數返回值: array

* 其它說明: 2004-8-19

*/

function getItems($id=null)

{

if(isset($_SESSION[‘cart’]))

{

if($id==null)

{

//print_r($_SESSION[‘cart’]);exit;

Return $_SESSION[‘cart’];

}

else

{

Return $_SESSION[‘cart’][$id];

}

}

}

/**

* 函數名稱: emptyItem

* 函數功能: 刪除商品

* 輸入參數: $id ———– 商品ID

* 函數返回值: bool

* 其它說明: 2004-8-19

*/

function emptyItem($id=null)

{

if($id==null)

{

unset($_SESSION[‘cart’]);

}

else

{

unset($_SESSION[‘cart’][$id]);

}

}

/**

* 函數名稱: sum

* 函數功能: 統計總價

* 輸入參數: none

* 函數返回值: int

* 其它說明: 2004-8-19

*/

function sum()

{

$total = 0;

if(isset($_SESSION[‘cart’])!empty($_SESSION[‘cart’]))

{

foreach($_SESSION[‘cart’] as $key=$val)

{

$total += $val[‘count’];

}

}

Return $total;

}

}

我用PHP做的購物車,為什麼每次往購物車中添加不同商品 ,購物車中確顯示的同一件商品啊

這個需要看你的購物車結構。

一般一個屬性的商品是在一條數據裡面,多次加入只是更改數量

不同屬性的商品應該分多條數據保存。最後購物車統計的是總的數量

原創文章,作者:GLUN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141647.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GLUN的頭像GLUN
上一篇 2024-10-08 17:53
下一篇 2024-10-08 17:53

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Java和Python哪個功能更好

    對於Java和Python這兩種編程語言,究竟哪一種更好?這個問題並沒有一個簡單的答案。下面我將從多個方面來對Java和Python進行比較,幫助讀者了解它們的優勢和劣勢,以便選擇…

    編程 2025-04-29
  • Python每次運行變數加一:實現計數器功能

    Python編程語言中,每次執行程序都需要定義變數,而在實際開發中常常需要對變數進行計數或者累加操作,這時就需要了解如何在Python中實現計數器功能。本文將從以下幾個方面詳細講解…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python strip()函數的功能和用法用法介紹

    Python的strip()函數用於刪除字元串開頭和結尾的空格,包括\n、\t等字元。本篇文章將從用法、功能以及與其他函數的比較等多個方面對strip()函數進行詳細講解。 一、基…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • 全能的wpitl實現各種功能的代碼示例

    wpitl是一款強大、靈活、易於使用的編程工具,可以實現各種功能。下面將從多個方面對wpitl進行詳細的闡述,每個方面都會列舉2~3個代碼示例。 一、文件操作 1、讀取文件 fil…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27

發表回復

登錄後才能評論