Chinaunix首页 | 论坛 | 博客
  • 博客访问: 324793
  • 博文数量: 111
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 707
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-26 11:00
个人简介

小伙向前冲呀,小伙向前冲呀。

文章分类

全部博文(111)

文章存档

2014年(43)

2013年(68)

我的朋友

分类: PHP

2014-01-27 22:01:06

php购物车的简单例子,使用cookie存购物车ID,db存购物车数据。 

Java代码 
  1. //购物车session的产生代码   
  2. if(! $session && ! $scid) {   
  3. /*  
  4. session用来区别每一个购物车,相当于每个车的身份证号;  
  5. scid只用来标识一个购物车id号,可以看做是每个车的名字;  
  6. 当该购物车的id和session值两者都不存在时,就产生一个新购物车  
  7. */   
  8. $session = md5(uniqid(rand()));   
  9. /*  
  10. 产生一个唯一的购物车session号  
  11. rand()先产生个随机数,uniqid()再在该随机数的基础上产生一个独一无二的字符串,最后对该字符串进行md5  
  12. */   
  13. SetCookie(scid, $session, time() + 14400);   
  14. /*  
  15. 设置该购物车cookie  
  16. 变量名:scid(不知到这里是不是少了一个 $号呢?=》更正:scid要加“”)  
  17. 变量值: $session  
  18. 有效时间:当前时间+14400秒(4小时内)  
  19. 关于setcookie函数的详细用法,大家还是参看php手册吧~  
  20. */   
  21. } 
  22. class Cart { //开始购物车类   
  23. function check_item( $table, $session, $product) {   
  24. /*  
  25. 查验物品(表名,session,物品)  
  26. */   
  27. $query = SELECT * FROM $table WHERE session=' $session' AND product=' $product' ;   
  28. /*  
  29. 看一看'表'里该'购物车'中有没有该'产品'  
  30. 即,该产品有没有已经放入购物车  
  31. */   
  32. $result = mysql_query( $query);   
  33. if(! $result) {   
  34. return 0;   
  35. }   
  36. /*  
  37. 查询失败  
  38. */   
  39. $numRows = mysql_num_rows( $result);   
  40. if( $numRows == 0) {   
  41. return 0;   
  42. /*  
  43. 若没有找到,则返回0  
  44. */   
  45. } else {   
  46. $row = mysql_fetch_object( $result);   
  47. return $row->quantity;   
  48. /*  
  49. 若找到,则返回该物品数量  
  50. 这里有必要解释一下mysql_fetch_object函数(下面还会用到):  
  51. 【mysql_fetch_object() 和 mysql_fetch_array() 类似,只有一点区别 - 返回一个对象而不是数组。】  
  52. 上面这句话摘自php手册,说得应该很明白了吧~  
  53. 简单的说就是,取一条记录中的某个字段,应该用“->”而不是像数组一样用下标  
  54. */   
  55. }   
  56. }   
  57. function add_item( $table, $session, $product, $quantity) {   
  58. /*  
  59. 添加新物品(表名,session,物品,数量)  
  60. */   
  61. $qty = $this->check_item( $table, $session, $product);   
  62. /*  
  63. 调用上面那个函数,先检查该类物品有没有已经放入车中  
  64. */   
  65. if( $qty == 0) {   
  66. $query = INSERT INTO $table (session, product, quantity) VALUES ;   
  67. $query .= (' $session', ' $product', ' $quantity') ;   
  68. mysql_query( $query);   
  69. /*若车中没有,则像车中添加该物品*/   
  70. } else {   
  71. $quantity += $qty; //若有,则在原有基础上增加数量   
  72. $query = UPDATE $table SET quantity=' $quantity' WHERE session=' $session' AND ;   
  73. $query .= product=' $product' ;   
  74. mysql_query( $query);   
  75. /*  
  76. 并修改数据库  
  77. */   
  78. }   
  79. }   
  80. function delete_item( $table, $session, $product) {   
  81. /*  
  82. 删除物品(表名,session,物品)  
  83. */   
  84. $query = DELETE FROM $table WHERE session=' $session' AND product=' $product' ;   
  85. mysql_query( $query);   
  86. /*  
  87. 删除该购物车中该类物品  
  88. */   
  89. }   
  90. function modify_quantity( $table, $session, $product, $quantity) {   
  91. /*  
  92. 修改物品数量(表名,session,物品,数量)  
  93. */   
  94. $query = UPDATE $table SET quantity=' $quantity' WHERE session=' $session' ;   
  95. $query .= AND product=' $product' ;   
  96. mysql_query( $query);   
  97. /*  
  98. 将该物品数量修改为参数中的值  
  99. */   
  100. }   
  101. function clear_cart( $table, $session) {   
  102. /*  
  103. 清空购物车(没什么好说)  
  104. */   
  105. $query = DELETE FROM $table WHERE session=' $session' ;   
  106. mysql_query( $query);   
  107. }   
  108. function cart_total( $table, $session) {   
  109. /*  
  110. 车中物品总价  
  111. */   
  112. $query = SELECT * FROM $table WHERE session=' $session' ;   
  113. $result = mysql_query( $query);   
  114. /*  
  115. 先把车中所有物品取出  
  116. */   
  117. if(mysql_num_rows( $result) > 0) {   
  118. while( $row = mysql_fetch_object( $result)) {   
  119. /*  
  120. 如果物品数量>0个,则逐个判断价格并计算  
  121. */   
  122. $query = SELECT price FROM inventory WHERE product=' $row->product' ;   
  123. $invResult = mysql_query( $query);   
  124. /*  
  125. 从inventory(库存)表中查找该物品的价格  
  126. */   
  127. $row_price = mysql_fetch_object( $invResult);   
  128. $total += ( $row_price->price * $row->quantity);   
  129. /*  
  130. 总价 += 该物品价格 * 该物品数量  
  131. ( 大家应该能看明白吧:) )  
  132. */   
  133. }   
  134. }   
  135. return $total; //返回总价钱   
  136. }   
  137. function display_contents( $table, $session) {   
  138. /*  
  139. 获取关于车中所有物品的详细信息  
  140. */   
  141. $count = 0;   
  142. /*  
  143. 物品数量计数  
  144. 注意,该变量不仅仅为了对物品数量进行统计,更重要的是,它将作为返回值数组中的下标,用来区别每一个物品!  
  145. */   
  146. $query = SELECT * FROM $table WHERE session=' $session' ORDER BY id ;   
  147. $result = mysql_query( $query);   
  148. /*  
  149. 先取出车中所有物品  
  150. */   
  151. while( $row = mysql_fetch_object( $result)) {   
  152. /*  
  153. 分别对每一个物品进行取详细信息  
  154. */   
  155. $query = SELECT * FROM inventory WHERE product=' $row->product' ;   
  156. $result_inv = mysql_query( $query);   
  157. /*  
  158. 从inventory(库存)表中查找该物品的相关信息  
  159. */   
  160. $row_inventory = mysql_fetch_object( $result_inv);   
  161. $contents[product][ $count] = $row_inventory->product;   
  162. $contents[price][ $count] = $row_inventory->price;   
  163. $contents[quantity][ $count] = $row->quantity;   
  164. $contents[total][ $count] = ( $row_inventory->price * $row->quantity);   
  165. $contents[description][ $count] = $row_inventory->description;   
  166. /*  
  167. 把所有关于该物品的详细信息放入 $contents数组  
  168. $contents是一个二维数组  
  169. 第一组下标是区别每个物品各个不同的信息(如物品名,价钱,数量等等)  
  170. 第二组下标是区别不同的物品(这就是前面定义的 $count变量的作用)  
  171. */   
  172. $count++; //物品数量加一(即下一个物品)   
  173. }   
  174. $total = $this->cart_total( $table, $session);   
  175. $contents[final] = $total;   
  176. /*  
  177. 同时调用上面那个cart_total函数,计算下总价钱  
  178. 并放入 $contents数组中  
  179. */   
  180. return $contents;   
  181. /*  
  182. 将该数组返回  
  183. */   
  184. }   
  185. function num_items( $table, $session) {   
  186. /*  
  187. 返回物品种类总数(也就是说,两个相同的东西算一种 好像是废话- -!)  
  188. */   
  189. $query = SELECT * FROM $table WHERE session=' $session' ;   
  190. $result = mysql_query( $query);   
  191. $num_rows = mysql_num_rows( $result);   
  192. return $num_rows;   
  193. /*  
  194. 取出车中所有物品,获取该操作影响的数据库行数,即物品总数(没什么好说的)  
  195. */   
  196. }   
  197. function quant_items( $table, $session) {   
  198. /*  
  199. 返回所有物品总数(也就是说,两个相同的东西也算两个物品 - -#)  
  200. */   
  201. $quant = 0;// 物品总量   
  202. $query = SELECT * FROM $table WHERE session=' $session' ;   
  203. $result = mysql_query( $query);   
  204. while( $row = mysql_fetch_object( $result)) {   
  205. /*  
  206. 把每种物品逐个取出  
  207. */   
  208. $quant += $row->quantity; //该物品数量加到总量里去   
  209. }   
  210. return $quant; //返回总量   
  211. }   
  212. }  
阅读(1372) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~