亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php實現仿寫CodeIgniter的購物車類

2020-03-22 20:33:20
字體:
來源:轉載
供稿:網友
本文實例講述了php實現仿寫CodeIgniter的購物車類。分享給大家供大家參考。具體如下: 這里仿寫CodeIgniter的購物車類 購物車基本功能: 1) 將物品加入購物車
2) 從購物車中刪除物品
3) 更新購物車物品信息 【+1/-1】
4) 對購物車物品進行統計
1. 總項目
2. 總數量
3. 總金額
5) 對購物單項物品的數量及金額進行統計
6) 清空購物車 cart.php文件如下: * @author quanshuidingdang html' target='_blank'>class Cart { //物品id及名稱規則,調試信息控制 private $product_id_rule = '.a-z0-9-_'; //小寫字母 | 數字 | ._- private $product_name_rule = '.:a-z0-9-_';//小寫字母 | 數字 | ._-: private $debug = TRUE; //購物車 private $_cart_contents = array(); * 構造函數 * @param array public function __construct() { //是否第一次使用 if(isset($_SESSION['cart_contents'])) { $this- _cart_contents = $_SESSION['cart_contents']; } else { $this- _cart_contents['cart_total'] = 0; $this- _cart_contents['total_items'] = 0; if($this- debug === TRUE) { //$this- _log("cart_create_success"); * 將物品加入購物車 * @access public * @param array 一維或多維數組,必須包含鍵值名: id - 物品ID標識, qty - 數量(quantity), price - 單價(price), name - 物品姓名 * @return bool public function insert($items = array()) { //輸入物品參數異常 if( ! is_array($items) OR count($items) == 0) { if($this- debug === TRUE) { $this- _log("cart_no_items_insert"); return FALSE; //物品參數處理 $save_cart = FALSE; if(isset($items['id'])) { if($this- _insert($items) === TRUE) { $save_cart = TRUE; } else { foreach($items as $val) { if(is_array($val) AND isset($val['id'])) { if($this- _insert($val) == TRUE) { $save_cart = TRUE; //當插入成功后保存數據到session if($save_cart) { $this- _save_cart(); return TRUE; return FALSE; * 更新購物車物品信息 * @access public * @param array * @return bool public function update($items = array()) { //輸入物品參數異常 if( !is_array($items) OR count($items) == 0) { if($this- debug === TRUE) { $this- _log("cart_no_items_insert"); return FALSE; //物品參數處理 $save_cart = FALSE; if(isset($items['rowid']) AND isset($items['qty'])) { if($this- _update($items) === TRUE) { $save_cart = TRUE; } else { foreach($items as $val) { if(is_array($val) AND isset($val['rowid']) AND isset($val['qty'])) { if($this- _update($val) === TRUE) { $save_cart = TRUE; //當更新成功后保存數據到session if($save_cart) { $this- _save_cart(); return TRUE; return FALSE; * 獲取購物車物品總金額 * @return int public function total() { return $this- _cart_contents['cart_total']; * 獲取購物車物品種類 * @return int public function total_items() { return $this- _cart_contents['total_items']; * 獲取購物車 * @return array public function contents() { return $this- _cart_contents; * 獲取購物車物品options * @param string * @return array public function options($rowid = '') { if($this- has_options($rowid)) { return $this- _cart_contents[$rowid]['options']; } else { return array(); * 清空購物車 public function destroy() { unset($this- _cart_contents); $this- _cart_contents['cart_total'] = 0; $this- _cart_contents['total_items'] = 0; unset($_SESSION['cart_contents']); * 判斷購物車物品是否有options選項 * @param string * @return bool private function has_options($rowid = '') { if( ! isset($this- _cart_contents[$rowid]['options']) OR count($this- _cart_contents[$rowid]['options']) === 0) { return FALSE; return TRUE; * 插入數據 * @access private * @param array * @return bool private function _insert($items = array()) { //輸入物品參數異常 if( ! is_array($items) OR count($items) == 0) { if($this- debug === TRUE) { $this- _log("cart_no_data_insert"); return FALSE; //如果物品參數無效(無id/qty/price/name) if( ! isset($items['id']) OR ! isset($items['qty']) OR ! isset($items['price']) OR ! isset($items['name'])) { if($this- debug === TRUE) { $this- _log("cart_items_data_invalid"); return FALSE; //去除物品數量左零及非數字字符 $items['qty'] = trim(preg_replace('/([^0-9])/i', '', $items['qty'])); $items['qty'] = trim(preg_replace('/^([0]+)/i', '', $items['qty'])); //如果物品數量為0,或非數字,則我們對購物車不做任何處理! if( ! is_numeric($items['qty']) OR $items['qty'] == 0) { if($this- debug === TRUE) { $this- _log("cart_items_data(qty)_invalid"); return FALSE; //物品ID正則判斷 if( ! preg_match('/^['.$this- product_id_rule.']+$/i', $items['id'])) { if($this- debug === TRUE) { $this- _log("cart_items_data(id)_invalid"); return FALSE; //物品名稱正則判斷 if( ! preg_match('/^['.$this- product_name_rule.']+$/i', $items['name'])) { if($this- debug === TRUE) { $this- _log("cart_items_data(name)_invalid"); return FALSE; //去除物品單價左零及非數字(帶小數點)字符 $items['price'] = trim(preg_replace('/([^0-9.])/i', '', $items['price'])); $items['price'] = trim(preg_replace('/^([0]+)/i', '', $items['price'])); //如果物品單價非數字 if( ! is_numeric($items['price'])) { if($this- debug === TRUE) { $this- _log("cart_items_data(price)_invalid"); return FALSE; //生成物品的唯一id if(isset($items['options']) AND count($items['options']) 0) { $rowid = md5($items['id'].implode('', $items['options'])); } else { $rowid = md5($items['id']); //加入物品到購物車 unset($this- _cart_contents[$rowid]); $this- _cart_contents[$rowid]['rowid'] = $rowid; foreach($items as $key = $val) { $this- _cart_contents[$rowid][$key] = $val; return TRUE; * 更新購物車物品信息(私有) * @access private * @param array * @return bool private function _update($items = array()) { //輸入物品參數異常 if( ! isset($items['rowid']) OR ! isset($items['qty']) OR ! isset($this- _cart_contents[$items['rowid']])) { if($this- debug == TRUE) { $this- _log("cart_items_data_invalid"); return FALSE; //去除物品數量左零及非數字字符 $items['qty'] = preg_replace('/([^0-9])/i', '', $items['qty']); $items['qty'] = preg_replace('/^([0]+)/i', '', $items['qty']); //如果物品數量非數字,對購物車不做任何處理! if( ! is_numeric($items['qty'])) { if($this- debug === TRUE) { $this- _log("cart_items_data(qty)_invalid"); return FALSE; //如果購物車物品數量與需要更新的物品數量一致,則不需要更新 if($this- _cart_contents[$items['rowid']]['qty'] == $items['qty']) { if($this- debug === TRUE) { $this- _log("cart_items_data(qty)_equal"); return FALSE; //如果需要更新的物品數量等于0,表示不需要這件物品,從購物車種清除 //否則修改購物車物品數量等于輸入的物品數量 if($items['qty'] == 0) { unset($this- _cart_contents[$items['rowid']]); } else { $this- _cart_contents[$items['rowid']]['qty'] = $items['qty']; return TRUE; * 保存購物車數據到session * @access private * @return bool private function _save_cart() { //首先清除購物車總物品種類及總金額 unset($this- _cart_contents['total_items']); unset($this- _cart_contents['cart_total']); //然后遍歷數組統計物品種類及總金額 $total = 0; foreach($this- _cart_contents as $key = $val) { if( ! is_array($val) OR ! isset($val['price']) OR ! isset($val['qty'])) { continue; $total += ($val['price'] * $val['qty']); //每種物品的總金額 $this- _cart_contents[$key]['subtotal'] = ($val['price'] * $val['qty']); //設置購物車總物品種類及總金額 $this- _cart_contents['total_items'] = count($this- _cart_contents); $this- _cart_contents['cart_total'] = $total; //如果購物車的元素個數少于等于2,說明購物車為空 if(count($this- _cart_contents) = 2) { unset($_SESSION['cart_contents']); return FALSE; //保存購物車數據到session $_SESSION['cart_contents'] = $this- _cart_contents; return TRUE; * 日志記錄 * @access private * @param string * @return bool private function _log($msg) { return @file_put_contents('cart_err.log', $msg, FILE_APPEND); /*End of file cart.php*/ /*Location /htdocs/cart.php*/ cart_demo.php文件如下: session_start(); require_once('cart.php'); $items = array( 0 = array( 'id' = 'sp001', 'qty' = 20, 'price' = '10.50', 'name' = 'a002', 'options' = array( 'made' = 'china', 'company' = 'bgi' 1 = array( 'id' = 'sp002', 'qty' = 1, 'price' = '3.50', 'name' = 'b002' $arr = array( 'rowid' = '86dbb7cb58a667558b4bbb1f60330028', 'qty' = 21 $cart = new Cart(); $cart- insert($items); //var_dump($cart- contents()); $cart- update($arr); var_dump($cart- contents()); //$cart- destroy(); //var_dump($_SESSION['cart_contents']); /*end of php*/ 希望本文所述對大家的php程序設計有所幫助。
PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品视频在线观看| 日本sm极度另类视频| 浅井舞香一区二区| 久久综合伊人77777| 国产精品激情自拍| 欧美成人sm免费视频| 国产精品午夜国产小视频| 国产精品96久久久久久| 人妖精品videosex性欧美| 国产精品亚洲综合天堂夜夜| 日韩精品高清在线观看| 亚洲第一精品夜夜躁人人躁| 热99精品只有里视频精品| 456亚洲影院| 亚洲qvod图片区电影| 黑人巨大精品欧美一区免费视频| 亚洲第一福利视频| 精品av在线播放| 国产成人综合久久| 久久天天躁狠狠躁老女人| 午夜精品久久久99热福利| 亚洲精品久久视频| 亚洲欧美日韩国产成人| 欧美综合在线第二页| 精品久久国产精品| 日韩av综合网站| 成人免费黄色网| 成人自拍性视频| www.亚洲天堂| 久久综合88中文色鬼| 精品亚洲男同gayvideo网站| 国产日韩欧美日韩| 91精品视频一区| 日韩中文字幕国产精品| 91成人国产在线观看| 成人精品久久av网站| 欧美国产日韩视频| 日韩欧美国产一区二区| 久久久免费在线观看| 福利二区91精品bt7086| 欧美成人午夜免费视在线看片| 亚洲精品电影网站| 欧美精品国产精品日韩精品| 欧洲日本亚洲国产区| 亚洲第一页在线| 亚洲精品有码在线| 精品久久香蕉国产线看观看亚洲| 日韩影视在线观看| 久久久久久九九九| 欧美性一区二区三区| 精品偷拍一区二区三区在线看| 久久99精品久久久久久琪琪| 成人h片在线播放免费网站| 欧美成人激情视频| 欧美理论在线观看| 91超碰中文字幕久久精品| 国产亚洲日本欧美韩国| 美女扒开尿口让男人操亚洲视频网站| 日韩国产在线看| 午夜精品久久久99热福利| 国产91精品视频在线观看| 色一区av在线| 日韩福利在线播放| 成人激情视频免费在线| 久久人人爽人人爽人人片av高清| xxx一区二区| 欧美成人黑人xx视频免费观看| 久久久久久久91| 欧美日韩国产色| 亚洲性视频网址| 亚洲午夜未删减在线观看| 91高潮精品免费porn| 亚洲男女自偷自拍图片另类| 日韩免费精品视频| 亚洲欧美福利视频| 日韩免费在线观看视频| 日韩免费在线看| 亚洲影院色在线观看免费| 国产精品jvid在线观看蜜臀| www.99久久热国产日韩欧美.com| 国产欧美日韩丝袜精品一区| 国产亚洲精品久久久久动| 日韩精品有码在线观看| 成人444kkkk在线观看| 久久久99久久精品女同性| 亚洲电影免费观看高清| 欧美午夜www高清视频| 日本高清视频精品| 日韩一区视频在线| 欧美日韩国产色视频| 91大神福利视频在线| 欧美精品999| 97成人在线视频| 亚洲一区二区三| 国内精品久久久久| 亚洲片av在线| 欧美精品一区三区| 中文字幕亚洲无线码在线一区| 中文在线资源观看视频网站免费不卡| 亚洲精品www久久久久久广东| 色狠狠av一区二区三区香蕉蜜桃| 国产日韩av在线播放| 亚洲国产精品网站| 久久久久久999| 欧美又大又硬又粗bbbbb| 久久精品99久久香蕉国产色戒| 亚洲精品一区中文字幕乱码| 国语自产精品视频在线看一大j8| 欧美专区福利在线| 日韩亚洲成人av在线| 日韩黄色在线免费观看| 欧美黄色小视频| 97国产一区二区精品久久呦| 国产91精品久久久久久| 亚洲欧美日韩精品久久| 国产成人一区二区三区小说| 亚洲va欧美va国产综合剧情| 国产精品色视频| 成人久久一区二区三区| 欧美一区在线直播| 欧美精品一区在线播放| 国产精品久久91| 日韩精品中文在线观看| 国外成人在线播放| 久久精品青青大伊人av| 91精品在线国产| 日韩精品欧美激情| 中文字幕亚洲综合久久| 91亚洲精品在线| 亚洲午夜未满十八勿入免费观看全集| 免费av一区二区| 久久手机精品视频| 亚洲国产精品人久久电影| 欧美老女人性视频| 亚洲风情亚aⅴ在线发布| 欧美精品999| 国产精品ⅴa在线观看h| 久久亚洲国产成人| 中文字幕精品一区二区精品| 欧美国产日本高清在线| 久久久久久成人精品| 久久久久www| 国产有码一区二区| 亚洲天堂免费在线| 久久视频精品在线| 6080yy精品一区二区三区| 日韩精品一区二区视频| 国产成人精品免高潮在线观看| 欧美人与性动交| 国内精品免费午夜毛片| 97在线观看视频| 青草成人免费视频| 亚洲精品午夜精品| 在线播放国产一区二区三区| 久久久久久国产三级电影| 色哟哟网站入口亚洲精品| 欧美丝袜第一区| 国产精品99蜜臀久久不卡二区| 亚洲区bt下载| 97在线看福利| 国产精品一区二区久久| 欧美极品xxxx| 亚洲综合av影视| 97国产精品视频人人做人人爱|