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