网站地图    收藏   

主页 > php专栏 > php应用 >

PHP购物车用法之更新购物车数量 - php高级应用

来源:自学PHP网    时间:2014-11-27 22:16 作者: 阅读:

[导读] 购物车数量意思就是在我们买东西时可以随时删除工增加商品,这样我们的购物车就必须更新记录啊,下面我来给大家介绍PHP购物车更新购物车数量程序与原因,有需要了解的朋友可参考.表...

PHP购物车用法之更新购物车数量

购物车数量意思就是在我们买东西时可以随时删除工增加商品,这样我们的购物车就必须更新记录啊,下面我来给大家介绍PHP购物车更新购物车数量程序与原因,有需要了解的朋友可参考.

表单部分,代码如下:

  1. <form action="?action=edit_num" method="post" name="car<?php $c_rs['id'];?>" id="car<?php $c_rs['id'];?>"> 
  2. <input name="suliang[<?php echo $c_rs['sp_id'];?>]" type="text" id="suliang[<?php echo $c_rs['sp_id'];?>]" value="<?php echo $c_rs['suliang'];?>"/> 
  3. <input type="submit" name="button" id="button" value="更新购物车" /> 
  4. </form> 

PHP处理部分,代码如下:

  1. <?php 
  2. require 'config.inc.php'
  3. require 'checklogin.php'
  4. $username = $_SESSION['username']; 
  5. $action = $_GET['action']; 
  6. switch ($action) { 
  7. case "edit_num"
  8. $arr = $arr = $_POST['suliang']; 
  9. foreach($arr as $key=>$value){ 
  10. $sqlgx = "update `cartemp` set suliang='$value' where username='".$username."' and flag=0 and sp_id='".$key."'"
  11. mysql_query($sqlgx$conn); 
  12. echo "<script>location.href='shopcat.php'</script>"
  13. break
  14. case "null"
  15. $null_sql = "delete from `cartemp` where username='$username' and flag=0 ";//开源代码phpfensi.com 
  16. mysql_query($null_sql$conn); 
  17. echo "<script>location.href='shopcat.php'</script>"
  18. break
  19. case "del"
  20. $id = $_GET['id']; 
  21. $del_sql = "delete from `cartemp` where id=$id"
  22. mysql_query($del_sql$conn); 
  23. echo "<script>location.href='shopcat.php'</script>"
  24. break
  25. ?> 

上面全部使用了数据库来操作,下面来个完全的类,代码如下:

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

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论