首頁 > 後端開發 > php教程 > php 購物車類別實作程式碼一例

php 購物車類別實作程式碼一例

WBOY
發布: 2016-07-25 08:59:37
原創
1016 人瀏覽過
  1. // 購物車類別
  2. /*
  3. 使用說明:
  4. 構造函數cart 可以使用參數:
  5. cart($cartname = 'myCart', $session_id = '', $savetype = 'session', $cookietime = 86400, $cookiepath = '/', $cookiedomain = '')
  6. $cartname是購物車的標識,可以指定,可以保證不重名,不會有相關衝突
  7. $session_id 是session_id,預設是使用cookie 來傳輸,也可以自訂,如果儲存類型是session 才起效
  8. $savetype 儲存類型,有session 和cookie 方式
  9. ... 其他是cookie 需要的參數
  10. 當程式本身用到session時,建議將此php購物車類改為cookie方式實作。

  11. //新增一個商品

  12. // 引用類別
  13. require_once './cart.class.php';
  14. // 建立類別實例
  15. $cart = new cart();
  16. // 商品已經存在修改資料

  17. if ($cart->data[$id]) {
  18. $cart->data[$id] ['count'] += $count;
  19. $cart->data[$id]['money'] += $cart->data[$id]['price'] * $count;
  20. // 新增商品
  21. } else {
  22. $cart->data[$id]['name'] = $name;
  23. $cart->data[$id]['price'] = $ price;
  24. $cart->data[$id]['count'] = $count;
  25. $cart->data[$id]['money'] = $price * $count;
  26. }
  27. // 儲存購物車資料
  28. $cart->save();
  29. 編輯一個商品數量

  30. // 引用類別
  31. require_once './cart .class.php';
  32. // 建立類別實例
  33. $cart = new cart();
  34. // 商品已經存在修改資料

  35. if ($cart- >data[$id]) {
  36. $cart->data[$id]['count'] = $count;
  37. $cart->data[$id]['money'] = $cart- >data[$id]['price'] * $count;
  38. // 儲存購物車資料

  39. $cart->save();
  40. }
  41. 刪除一個商品

  42. // 引用類別
  43. require_once './cart.class.php';
  44. // 建立類別實例
  45. $cart = new cart();
  46. // 刪除商品

  47. unset($cart->data[$id]);
  48. // 儲存購物車資料

  49. $cart ->save();
  50. 列表購物車

  51. // 引用類別
  52. require_once './cart.class.php';
  53. // 建立類別實例
  54. $cart = new cart();
  55. foreach ($cart->data AS $k => $v) {

  56. echo '商品ID: '.$k;
  57. echo '商品名稱: '.$v['name'];
  58. echo '商品單價: '.$v['price'];
  59. echo '商品數量: '.$v['count' ];
  60. echo '商品總價: '.$v['money'];
  61. }
  62. 某字段總累計--- 如所有商品總價格

  63. // 引用類別
  64. require_once './cart.class.php';
  65. // 建立類別實例
  66. $cart = new cart();
  67. // 累計money 欄位

  68. $cart->sum('money')
  69. 清空購物車

  70. // 引用類別
  71. require_once './cart.class.php';
  72. // 建立類別實例
  73. $cart = new cart();
  74. // 清除資料

  75. unset($cart->data);
  76. // 保存購物車資料

  77. $cart->save();
  78. */
  79. //購物車類別

  80. //edit bbs.it -home.org
  81. class cart {
  82. // 購物車識別碼

  83. var $cartname = '';
  84. // 儲存類型
  85. var $savetype = ' ';
  86. // 購物車中商品資料
  87. var $data = array();
  88. // Cookie 資料
  89. var $cookietime = 0;
  90. var $cookiepath = '/';
  91. var $cookiedomain = '';
  92. // 建構子(購物車識別, $session_id, 儲存類型(session或cookie), 預設為一天時間, $cookiepath, $cookiedomain )

  93. function cart($cartname = 'myCart', $session_id = '', $savetype = 'session', $cookietime = 86400, $cookiepath = '/', $cookiedomain = '') {
  94. // 採用session 儲存

  95. if ($savetype == 'session') {
  96. if (!$session_id && $_COOKIE[$cartname.'_session_id' ]) {

  97. session_id($_COOKIE[$cartname.'_session_id']);
  98. } elseif($session_id)
  99. session_id($session_id);
  100. session_start(p>session_start( );

  101. if (!$session_id && !$_COOKIE[$cartname.'_session_id'])

  102. setcookie($cartname.'_session_id', session_id(), $cookietime + time (), $cookiepath, $cookiedomain);
  103. }
  104. $this->cartname = $cartname;

  105. $this->savetype = $savetype;
  106. $this ->cookietime = $cookietime;
  107. $this->cookiepath = $cookiepath;
  108. $this->cookiedomain = $cookiedomain;
  109. $this->readdata();
  110. }
  111. // 讀取資料

  112. function readdata() {
  113. if ($this->savetype == 'session') {
  114. if ($_SESSION[$this->cartname] && is_array($_SESSION[$this->cartname]))
  115. $this->data = $_SESSION[$this->cartname];
  116. else
  117. $this->data = array();
  118. } elseif ($this->savetype == 'cookie') {
  119. if ($_COOKIE[$this->cartname])
  120. $this->data = unserialize($_COOKIE[$this- >cartname]);
  121. else
  122. $this->data = array();
  123. }
  124. }
  125. // 儲存購物車資料

  126. function save() {
  127. if ($this->savetype == 'session') {
  128. $_SESSION[$this->cartname] = $this->data;
  129. }elseif ($this->savetype == 'cookie') {
  130. if ($this->data)
  131. setcookie($this->cartname, serialize($this->data), $ this->cookietime + time(), $this->cookiepath, $this->cookiedomain);
  132. }
  133. }
  134. // 傳回商品某欄位累加

  135. function sum($ field) {
  136. $sum = 0;

  137. if ($this->data)
  138. foreach ($this-> ;資料AS $v)
  139. if ($ v[$field])
  140. $sum += $v[$field] + 0;
  141. 回傳$sum;

  142. }
  143. }
  144. ?>
複製程式碼


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板