Heim >Backend-Entwicklung >PHP-Tutorial >php 购物车类实现代码一例

php 购物车类实现代码一例

WBOY
WBOYOriginal
2016-07-25 08:59:371013Durchsuche
  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();

  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->data AS $v)
  139. if ($v[$field])
  140. $sum += $v[$field] + 0;
  141. return $sum;

  142. }
  143. }
  144. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn