麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > 建站經驗 > 正文

ecshop二次開發之購物車分析

2024-04-25 20:34:40
字體:
來源:轉載
供稿:網友

本文實例講述了ecshop二次開發之購物車分析。分享給大家供大家參考。具體分析如下:

一、保存用戶購物車數據

ECSHOP的購物車數據,是以Session 方式存儲在數據庫里,并在Session結束后 ,Distroy 掉,解決方法是:
1.購物車內容讀取方式. 更改登陸后購物車獲取條件 "Session 單獨方式"為 Session +用戶名 ,該修改位于Lib_order 下 function get_cart_goods();

2. 購物車內容記錄方式,未登陸方式依然是Session , 用戶登陸后,自動UPdate Cart 一次,將同一UserID下購物車內數據不是當前Session的Update到當前Session , 并將當前Session 下UserID為0的部分(未登陸情況下,Userid是0),UpdateID到當前UserID ,該修改位于 Flow.php 下面function flow_update_cart($arr)

3.更改退出時,自動Clear Cart的部分,將Distroy 當前Session 的內容,更改為Distroy 當前Session 下 User ID為0的部分。 該修改位于:Includes/cls_session.php , function destroy_session() 部分

說明:這種情況下就是游客關閉瀏覽器后,購物車清空, 注冊用戶購物車永久保存, 可能會對服務器造成輕微壓力,主要取決于用戶的數量,如果數量較多數據服務器壓力較大,可以通過程序,自動清理超過一定時間段未登陸的User Cart (或者是額外增加一個數據,來標示加入購物車的時間,根據此時間判斷是否自

動清理).

二、讀取購物車數據

1.購物車內容讀取方式. 更改登陸后購物車獲取條件 "Session 單獨方式"為 Session +用戶名 ,該修改位于Lib_order 下 function get_cart_goods();

具體更改代碼部分:

function get_cart_goods()

{

$goods_list = array();

$total = array(

'goods_price' => 0, // 本店售價合計(有格式)

'market_price' => 0, // 市場售價合計(有格式)

'saving' => 0, // 節省金額(有格式)

'save_rate' => 0, // 節省百分比

'goods_amount' => 0, // 本店售價合計(無格式)

);</p> <p>$uid=$_SESSION['user_id'];

if($uid==0){

$sql = "SELECT *, IF(parent_id, parent_id, goods_id) AS pid " .

" FROM " . $GLOBALS['ecs']->table('cart') . " " .

" WHERE session_id = '" . SESS_ID . "' AND rec_type = '" . CART_GENERAL_GOODS . "'" .

" ORDER BY pid, parent_id";}else{

$sql = "SELECT *, IF(parent_id, parent_id, goods_id) AS pid " .

" FROM " . $GLOBALS['ecs']->table('cart') . " " .

" WHERE (user_id='".$uid."' OR session_id = '" . SESS_ID . "') AND rec_type = '" . CART_GENERAL_GOODS . "'" .

" ORDER BY pid, parent_id";

}

$res = $GLOBALS['db']->query($sql);

//........后面不變

2. 購物車內容記錄方式,未登陸方式依然是Session , 用戶登陸后,自動UPdate Cart 一次,將同一UserID下購物車內數據不是當前Session的Update到當前Session , 并將當前Session 下UserID為0的部分(未登陸情況下,Userid是0),UpdateID到當前UserID ,該修改位于 Flow.php 下面function flow_update_cart($arr)

function flow_update_cart($arr)
{
foreach ($arr AS $key => $val)

{

$val = intval(make_semiangle($val));

if ($val <= 0)

{

continue;

}</p> <p> $sql = "SELECT `rec_id`, `goods_id`, `goods_attr_id`, `extension_code` FROM" .$GLOBALS['ecs']->table('cart').

" WHERE rec_id='$key' AND (session_id='" . SESS_ID . "' OR user_id='".$_SESSION['user_id']."')";</p> <p> $goods = $GLOBALS['db']->getRow($sql);

// 更新購物車Session & user id

$sql ="UPDATE " .$GLOBALS['ecs']->table('cart')." SET session_id='" . SESS_ID . "',user_id='".$_SESSION['user_id']."' where rec_id='".$goods['rec_id']."'";

$g = $GLOBALS['db']->query($sql);

$sql = "SELECT g.goods_name, g.goods_number ".

"FROM " .$GLOBALS['ecs']->table('goods'). " AS g, ".

$GLOBALS['ecs']->table('cart'). " AS c ".

"WHERE g.goods_id = c.goods_id AND c.rec_id = '$key'";

//...........................后面不變

在用戶登陸后,Flow.php打開購物車地方,需要調用一次自動更新購物車,

在$cart_goods = get_cart_goods();

之后增加如下代碼

for($i=0; $i<count($cart_goods['goods_list']);$i++){

$a[$cart_goods['goods_list'][$i]['rec_id']]=$cart_goods['goods_list'][0]['goods_number'];}
if(count($a)>0){flow_update_cart($a);}

第三項自己琢磨吧,懶得去翻那代碼了,改掉SQL語句中session_id部分為user_id就行了

希望本文所述對大家的ecshop二次開發有所幫助。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品hd免费观看 | 日本黄色一级视频 | 一级黄色免费大片 | 欧美成人精品一区二区男人小说 | 国产一级毛片视频在线! | 日韩精品久久久久久久电影99爱 | 国产乱淫av片免费观看 | 久久影院午夜 | 国产自在自线午夜精品视频在 | 超碰人人做人人爱 | 在线播放视频一区二区 | 亚洲国产色婷婷 | 国产精品成年片在线观看, 激情小说另类 | 久久国产精品影视 | 国产午夜免费 | 国产成人高潮免费观看精品 | 91九色蝌蚪国产 | 性少妇videosexfreexx入片 | 国产精品亚洲综合一区二区三区 | 鲁丝片一区二区三区免费入口 | 久草视频国产在线 | 久久精品国产精品亚洲 | 精品不卡| 精品一区二区三区免费毛片爱 | 性视频久久 | 草草视频在线播放 | 91麻豆精品国产91久久久更新资源速度超快 | 国产乱色精品成人免费视频 | 国产精品一品二区三区四区18 | 国产亚洲综合一区二区 | 亚洲午夜久久久久 | 国产在线观看91一区二区三区 | 色婷婷一区二区三区 | 精品国产一区二区三区天美传媒 | 欧美伦理一区二区 | 国产啊v在线观看 | 日韩av成人 | 国产精品性夜天天视频 | 国产网站黄 | 最新中文字幕第一页视频 | 亚洲午夜天堂吃瓜在线 |