php 購物車的實作程式碼一例(session方式)

WBOY
發布: 2016-07-25 08:59:36
原創
976 人瀏覽過
  1. /**

  2. * php 購物車
  3. * Edit bbs.it-home.org
  4. */
  5. //購物車session的產生代碼

  6. if(! $session && ! $scid) {
  7. /*
  8. session用來區別每一個購物車,相當於每輛車的身分證號;
  9. scid只用來標示一個購物車id號,可以看做是每個車的名字;
  10. 當該購物車的id和session值兩者都不存在時,就產生一個新購物車
  11. */
  12. $session = md5(uniqid(rand()));
  13. /*
  14. 產生一個唯一的購物車session號
  15. rand()先產生個隨機數,uniqid()再在該隨機數的基礎上產生一個獨特的字串,最後對該字串進行md5
  16. */
  17. SetCookie(scid, $session, time() + 14400);
  18. /*
  19. 設定該購物車cookie
  20. 變數名稱:scid(不知到這裡是不是少了一個$號呢?=》更正:scid要加「」)
  21. 變數值: $session
  22. 有效時間:當前時間+14400秒(4小時內)
  23. 關於setcookie函數的詳細用法,大家還是參考php手冊吧~
  24. */
  25. }
  26. class Cart { //開始購物車類別
  27. function check_item( $table, $session, $product) {
  28. /*
  29. 查驗物品(表名,session,物品)
  30. */
  31. $query = SELECT * FROM $table WHERE session=' $session ' AND product=' $product' ;
  32. /*
  33. 看一看'表'裡該'購物車'中有沒有該'產品'
  34. 即,該產品有沒有已經放入購物車
  35. */
  36. $result = mysql_query( $query);
  37. if(! $result) {
  38. return 0;
  39. }
  40. /*
  41. 查詢失敗
  42. */
  43. $numRows = mysql_num_rows( $result);
  44. if( $numRows == 0) {
  45. return 0;
  46. /*
  47. 若找不到,則回傳0
  48. */
  49. } else {
  50. $row = mysql_fetch_object( $result);
  51. return $row->quantity;
  52. /*
  53. 若找到,則回傳該物品數量
  54. 這裡有必要解釋一下mysql_fetch_object函數(下面還會用到):
  55. 【mysql_fetch_object() 和mysql_fetch_array() 類似,只有一點區別- 返回一個物件而不是數組。】
  56. 取一筆記錄中的某個字段,應該用「->」而不是像數組一樣用下標
  57. */
  58. }
  59. }
  60. function add_item( $table, $ session, $product, $quantity) {
  61. /*
  62. 新增物品(表名,session,物品,數量)
  63. */
  64. $qty = $this->check_item( $table, $session, $product);
  65. /*
  66. 呼叫上面那個函數,先檢查該類物品有沒有已經放入車中
  67. */
  68. if( $qty == 0) {
  69. $query = INSERT INTO $table (session, product, quantity) VALUES ;
  70. $query .= (' $session', ' $product', ' $quantity') ;
  71. mysql_query( $query) ;
  72. /*若車中沒有,則像車中添加該物品*/
  73. } else {
  74. $quantity += $qty; //若有,則在原有基礎上增加數量
  75. $query = UPDATE $table SET quantity=' $quantity' WHERE session=' $session' AND ;
  76. $query .= product=' $product' ;
  77. mysql_query( $query);
  78. / *
  79. 並修改資料庫
  80. */
  81. }
  82. }
  83. function delete_item( $table, $session, $product) {
  84. /*
  85. 刪除物品(表名, session,物品)
  86. */
  87. $query = DELETE FROM $table WHERE session=' $session' AND product=' $product' ;
  88. mysql_query( $query);
  89. /*
  90. mysql_query( $query);
  91. /*
  92. 刪除該php購物車中該類物品
  93. */
  94. }
  95. function modify_quantity( $table, $session, $product, $quantity) {
  96. /*
  97. 修改物品數量(表名,session,物品,數量)
  98. */
  99. $query = UPDATE $table SET quantity=' $quantity' WHERE session=' $session' ;
  100. $query .= AND product=' $ product' ;
  101. mysql_query( $query);
  102. /*
  103. 將該物品數量修改為參數中的值
  104. */
  105. }
  106. function clear_cart( $table, $session ) {
  107. /*
  108. 清空購物車(沒什麼好說)
  109. */
  110. $query = DELETE FROM $table WHERE session=' $session' ;
  111. mysql_query( $query);
  112. }
  113. function cart_total( $table, $session) {
  114. /*
  115. 車中物品總價
  116. */
  117. $query = SELECT * FROM $table WHERE session=' $ session' ;
  118. $result = mysql_query( $query);
  119. /*
  120. 先把車中所有物品取出
  121. */
  122. if(mysql_num_rows( $result) > 0) {
  123. while( $row = mysql_fetch_object( $result)) {
  124. /*
  125. 如果物品數量>0個,則逐個判斷價格併計算
  126. */
  127. $query = SELECT price FROM inventory WHERE product=' $row->product' ;
  128. $invResult = mysql_query( $query);
  129. /*
  130. 從inventory(庫存)表中查找該物品的價格
  131. */
  132. $row_price = mysql_fetch_object( $invResult);
  133. $total += ( $row_price->price * $row->quantity);
  134. /*
  135. 總價+=
  136. ( 大家應該可以看懂吧:) )
  137. */
  138. }
  139. }
  140. return $total; //回傳總價錢
  141. }
  142. function display_contents( $table , $session) {
  143. /*
  144. 取得車中所有物品的詳細資訊
  145. */
  146. $count = 0;
  147. /*物品數量計數注意,該變數不僅僅為了對物品數量進行統計,更重要的是,它將作為返回值數組中的下標,用來區別每一個物品!
  148. */
  149. $query = SELECT * FROM $table WHERE session=' $session' ORDER BY id ;
  150. $result = mysql_query( $query);
  151. /*
  152. 先取出車中所有物品
  153. */
  154. while( $row = mysql_fetch_object( $result)) {
  155. /*
  156. 分別對每個物品取詳細資料
  157. */
  158. $query = SELECT * FROM inventory WHERE product=' $row->product' ;
  159. $result_inv = mysql_query( $query);
  160. /*
  161. 從inventory(庫存)表中查找該物品的相關資訊
  162. */
  163. $row_inventory = mysql_fetch_object( $result_inv);
  164. $contents[product][ $count] = $row_inventory->product;
  165. $contents[price][ $count] = $row🎜>$contents[price][ $count] = $row🎜>$contents[price][ $count] = $row_ ->price;
  166. $contents[quantity][ $count] = $row->quantity;
  167. $contents[total][ $count] = ( $row_inventory->price * $row->quantity);
  168. $contents[description][ $count] = $row_inventory->description;
  169. /*
  170. 把所有關於該物品的詳細資訊放入$contents數組
  171. $contents是一個二維數組
  172. 第一組下標是區別每個物品各個不同的資訊(如物品名,價錢,數量等等)
  173. 第二組下標是區別不同的物品(這就是前面定義的$count變量的作用)
  174. */
  175. $count++; //物品數量加一(即下一個物品)
  176. }
  177. $total = $this->cart_total( $table, $session);
  178. $contents[final] = $total;
  179. /*
  180. 同時呼叫上面那個cart_total函數,計算下總價錢
  181. 並放入$contents數組
  182. */
  183. return $ contents;
  184. /*
  185. 將此陣列回傳
  186. */
  187. }
  188. function num_items( $table, $session) {
  189. /*
  190. 傳回物品種類總數(也將總量就是說,兩個相同的東西算一種好像是廢話- -!)
  191. */
  192. $query = SELECT * FROM $table WHERE session=' $session' ;
  193. $result = mysql_query( $query);
  194. $num_rows = mysql_num_rows( $result);
  195. return $num_rows;
  196. /*
  197. 取出車中所有物品,取得此操作影響的資料庫行數,即物品總數
  198. */
  199. }
  200. function quant_items( $table, $session) {
  201. /*
  202. 傳回所有物品總數(也就是說,兩個相同的東西也算兩個物品- - #)
  203. */
  204. $quant = 0;// 物品總量
  205. $query = SELECT * FROM $table WHERE session=' $session' ;
  206. $result = mysql_query( $query) ;
  207. while( $row = mysql_fetch_object( $result)) {
  208. /*
  209. 把每種物品逐一取出
  210. */
  211. $quant += $row->quantity; //此物品數量加到總量裡去
  212. }
  213. return $quant; //回傳總量
  214. }
  215. }
  216. ?>
複製程式碼


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板