-
-
- // 購物車類別
- /*
- 使用說明:
- 構造函數cart 可以使用參數:
- cart($cartname = 'myCart', $session_id = '', $savetype = 'session', $cookietime = 86400, $cookiepath = '/', $cookiedomain = '')
- $cartname是購物車的標識,可以指定,可以保證不重名,不會有相關衝突
- $session_id 是session_id,預設是使用cookie 來傳輸,也可以自訂,如果儲存類型是session 才起效
- $savetype 儲存類型,有session 和cookie 方式
- ... 其他是cookie 需要的參數
當程式本身用到session時,建議將此php購物車類改為cookie方式實作。
//新增一個商品
- // 引用類別
- require_once './cart.class.php';
- // 建立類別實例
- $cart = new cart();
// 商品已經存在修改資料
- if ($cart->data[$id]) {
- $cart->data[$id] ['count'] += $count;
- $cart->data[$id]['money'] += $cart->data[$id]['price'] * $count;
- // 新增商品
- } else {
- $cart->data[$id]['name'] = $name;
- $cart->data[$id]['price'] = $ price;
- $cart->data[$id]['count'] = $count;
- $cart->data[$id]['money'] = $price * $count;
- }
- // 儲存購物車資料
- $cart->save();
編輯一個商品數量
- // 引用類別
- require_once './cart .class.php';
- // 建立類別實例
- $cart = new cart();
// 商品已經存在修改資料
- if ($cart- >data[$id]) {
- $cart->data[$id]['count'] = $count;
- $cart->data[$id]['money'] = $cart- >data[$id]['price'] * $count;
// 儲存購物車資料
- $cart->save();
- }
刪除一個商品
- // 引用類別
- require_once './cart.class.php';
- // 建立類別實例
- $cart = new cart();
// 刪除商品
- unset($cart->data[$id]);
// 儲存購物車資料
- $cart ->save();
列表購物車
- // 引用類別
- require_once './cart.class.php';
- // 建立類別實例
- $cart = new cart();
foreach ($cart->data AS $k => $v) {
- echo '商品ID: '.$k;
- echo '商品名稱: '.$v['name'];
- echo '商品單價: '.$v['price'];
- echo '商品數量: '.$v['count' ];
- echo '商品總價: '.$v['money'];
- }
某字段總累計--- 如所有商品總價格
- // 引用類別
- require_once './cart.class.php';
- // 建立類別實例
- $cart = new cart();
// 累計money 欄位
- $cart->sum('money')
清空購物車
- // 引用類別
- require_once './cart.class.php';
- // 建立類別實例
- $cart = new cart();
// 清除資料
- unset($cart->data);
// 保存購物車資料
- $cart->save();
- */
//購物車類別
- //edit bbs.it -home.org
- class cart {
// 購物車識別碼
- var $cartname = '';
- // 儲存類型
- var $savetype = ' ';
- // 購物車中商品資料
- var $data = array();
- // Cookie 資料
- var $cookietime = 0;
- var $cookiepath = '/';
- var $cookiedomain = '';
// 建構子(購物車識別, $session_id, 儲存類型(session或cookie), 預設為一天時間, $cookiepath, $cookiedomain )
- function cart($cartname = 'myCart', $session_id = '', $savetype = 'session', $cookietime = 86400, $cookiepath = '/', $cookiedomain = '') {
// 採用session 儲存
- if ($savetype == 'session') {
if (!$session_id && $_COOKIE[$cartname.'_session_id' ]) {
- session_id($_COOKIE[$cartname.'_session_id']);
- } elseif($session_id)
- session_id($session_id);
session_start(p>session_start( );
if (!$session_id && !$_COOKIE[$cartname.'_session_id'])
- setcookie($cartname.'_session_id', session_id(), $cookietime + time (), $cookiepath, $cookiedomain);
- }
$this->cartname = $cartname;
- $this->savetype = $savetype;
- $this ->cookietime = $cookietime;
- $this->cookiepath = $cookiepath;
- $this->cookiedomain = $cookiedomain;
- $this->readdata();
- }
// 讀取資料
- function readdata() {
- if ($this->savetype == 'session') {
- if ($_SESSION[$this->cartname] && is_array($_SESSION[$this->cartname]))
- $this->data = $_SESSION[$this->cartname];
- else
- $this->data = array();
- } elseif ($this->savetype == 'cookie') {
- if ($_COOKIE[$this->cartname])
- $this->data = unserialize($_COOKIE[$this- >cartname]);
- else
- $this->data = array();
- }
- }
// 儲存購物車資料
- function save() {
- if ($this->savetype == 'session') {
- $_SESSION[$this->cartname] = $this->data;
- }elseif ($this->savetype == 'cookie') {
- if ($this->data)
- setcookie($this->cartname, serialize($this->data), $ this->cookietime + time(), $this->cookiepath, $this->cookiedomain);
- }
- }
// 傳回商品某欄位累加
- function sum($ field) {
$sum = 0;
- if ($this->data)
- foreach ($this-> ;資料AS $v)
- if ($ v[$field])
- $sum += $v[$field] + 0;
回傳$sum;
- }
- }
- ?>
-
複製程式碼
|