免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4076 | 回复: 0
打印 上一主题 下一主题

php 购物车类代码一例(强大好用) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-29 12:08 |只看该作者 |倒序浏览
php实现的购物车类,采用session方式实现,当然也可以修改为cookie的方式。

代码如下:

  1. <?
  2. // 购物车类
  3. /*
  4. 使用说明:
  5. 构造函数 cart 可以使用参数:
  6. cart($cartname = 'myCart', $session_id = '', $savetype = 'session', $cookietime = 86400, $cookiepath = '/', $cookiedomain = '')
  7. $cartname 是购物车的标识,可以指定,可以保证不重名,不会有相关冲突
  8. $session_id 是 session_id,默认是使用 cookie 来传输,也可以自定义,如果存储类型是 session 才起效
  9. $savetype 存储类型,有 session 和 cookie 方式
  10. ... 其他是 cookie 需要的参数
  11. #edit by www.jbxue.com
  12. 当程序本身用到session时,建议将此php购物车类改为cookie方式实现。

  13. //添加一个商品
  14. // 引用类
  15. require_once './cart.class.php';
  16. // 建立类实例
  17. $cart = new cart();

  18. // 商品已经存在 修改数据
  19. if ($cart->data[$id]) {
  20. $cart->data[$id]['count'] += $count;
  21. $cart->data[$id]['money'] += $cart->data[$id]['price'] * $count;
  22. // 添加商品
  23. } else {
  24. $cart->data[$id]['name'] = $name;
  25. $cart->data[$id]['price'] = $price;
  26. $cart->data[$id]['count'] = $count;
  27. $cart->data[$id]['money'] = $price * $count;
  28. }
  29. // 保存购物车数据
  30. $cart->save();

  31. 编辑一个商品数量
  32. // 引用类
  33. require_once './cart.class.php';
  34. // 建立类实例
  35. $cart = new cart();

  36. // 商品已经存在 修改数据
  37. if ($cart->data[$id]) {
  38. $cart->data[$id]['count'] = $count;
  39. $cart->data[$id]['money'] = $cart->data[$id]['price'] * $count;

  40. // 保存购物车数据
  41. $cart->save();
  42. }

  43. 删除一个商品
  44. // 引用类
  45. require_once './cart.class.php';
  46. // 建立类实例
  47. $cart = new cart();

  48. // 删除商品
  49. unset($cart->data[$id]);

  50. // 保存购物车数据
  51. $cart->save();

  52. 列表购物车
  53. // 引用类
  54. require_once './cart.class.php';
  55. // 建立类实例
  56. $cart = new cart();

  57. foreach ($cart->data AS $k => $v) {
  58. echo '商品 ID: '.$k;
  59. echo '商品名称: '.$v['name'];
  60. echo '商品单价: '.$v['price'];
  61. echo '商品数量: '.$v['count'];
  62. echo '商品总价: '.$v['money'];
  63. }

  64. 某字段总累计 --- 如所有商品总价格
  65. // 引用类
  66. require_once './cart.class.php';
  67. // 建立类实例
  68. $cart = new cart();

  69. // 累计 money 字段
  70. $cart->sum('money')

  71. 清空购物车
  72. // 引用类
  73. require_once './cart.class.php';
  74. // 建立类实例
  75. $cart = new cart();

  76. // 清除数据
  77. unset($cart->data);

  78. // 保存购物车数据
  79. $cart->save();
  80. */

  81. //购物车类
  82. //edit www.jbxue.com
  83. class cart {

  84. // 购物车标识
  85. var $cartname = '';
  86. // 存储类型
  87. var $savetype = '';
  88. // 购物车中商品数据
  89. var $data = array();
  90. // Cookie 数据
  91. var $cookietime = 0;
  92. var $cookiepath = '/';
  93. var $cookiedomain = '';

  94. // 构造函数 (购物车标识, $session_id, 存储类型(session或cookie), 默认是一天时间, $cookiepath, $cookiedomain)
  95. function cart($cartname = 'myCart', $session_id = '', $savetype = 'session', $cookietime = 86400, $cookiepath = '/', $cookiedomain = '') {

  96. // 采用 session 存储
  97. if ($savetype == 'session') {

  98. if (!$session_id && $_COOKIE[$cartname.'_session_id']) {
  99. session_id($_COOKIE[$cartname.'_session_id']);
  100. } elseif($session_id)
  101. session_id($session_id);

  102. session_start();

  103. if (!$session_id && !$_COOKIE[$cartname.'_session_id'])
  104. setcookie($cartname.'_session_id', session_id(), $cookietime + time(), $cookiepath, $cookiedomain);
  105. }

  106. $this->cartname = $cartname;
  107. $this->savetype = $savetype;
  108. $this->cookietime = $cookietime;
  109. $this->cookiepath = $cookiepath;
  110. $this->cookiedomain = $cookiedomain;
  111. $this->readdata();
  112. }

  113. // 读取数据
  114. function readdata() {
  115. if ($this->savetype == 'session') {
  116. if ($_SESSION[$this->cartname] && is_array($_SESSION[$this->cartname]))
  117. $this->data = $_SESSION[$this->cartname];
  118. else
  119. $this->data = array();
  120. } elseif ($this->savetype == 'cookie') {
  121. if ($_COOKIE[$this->cartname])
  122. $this->data = unserialize($_COOKIE[$this->cartname]);
  123. else
  124. $this->data = array();
  125. }
  126. }

  127. // 保存购物车数据
  128. function save() {
  129. if ($this->savetype == 'session') {
  130. $_SESSION[$this->cartname] = $this->data;
  131. } elseif ($this->savetype == 'cookie') {
  132. if ($this->data)
  133. setcookie($this->cartname, serialize($this->data), $this->cookietime + time(), $this->cookiepath, $this->cookiedomain);
  134. }
  135. }

  136. // 返回商品某字段累加
  137. function sum($field) {

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

  143. return $sum;
  144. }
  145. }
  146. ?>
复制代码
本文原始链接:http://www.jbxue.com/article/8133.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP