ecshop二次開(kāi)發(fā)之購(gòu)物車分析
來(lái)源:易賢網(wǎng) 閱讀:868 次 日期:2015-03-03 10:28:21
溫馨提示:易賢網(wǎng)小編為您整理了“ecshop二次開(kāi)發(fā)之購(gòu)物車分析”,方便廣大網(wǎng)友查閱!

本文實(shí)例講述了ecshop二次開(kāi)發(fā)之購(gòu)物車分析。分享給大家供大家參考。具體分析如下:

一、保存用戶購(gòu)物車數(shù)據(jù)

ECSHOP的購(gòu)物車數(shù)據(jù),是以Session 方式存儲(chǔ)在數(shù)據(jù)庫(kù)里,并在Session結(jié)束后 ,Distroy 掉,解決方法是:

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

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

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

說(shuō)明:這種情況下就是游客關(guān)閉瀏覽器后,購(gòu)物車清空, 注冊(cè)用戶購(gòu)物車永久保存, 可能會(huì)對(duì)服務(wù)器造成輕微壓力,主要取決于用戶的數(shù)量,如果數(shù)量較多數(shù)據(jù)服務(wù)器壓力較大,可以通過(guò)程序,自動(dòng)清理超過(guò)一定時(shí)間段未登陸的User Cart (或者是額外增加一個(gè)數(shù)據(jù),來(lái)標(biāo)示加入購(gòu)物車的時(shí)間,根據(jù)此時(shí)間判斷是否自

動(dòng)清理).

二、讀取購(gòu)物車數(shù)據(jù)

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

具體更改代碼部分:

復(fù)制代碼代碼如下:function get_cart_goods()

{

$goods_list = array();

$total = array(

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

'market_price' => 0, // 市場(chǎng)售價(jià)合計(jì)(有格式)

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

'save_rate' => 0, // 節(jié)省百分比

'goods_amount' => 0, // 本店售價(jià)合計(jì)(無(wú)格式)

);</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. 購(gòu)物車內(nèi)容記錄方式,未登陸方式依然是Session , 用戶登陸后,自動(dòng)UPdate Cart 一次,將同一UserID下購(gòu)物車內(nèi)數(shù)據(jù)不是當(dāng)前Session的Update到當(dāng)前Session , 并將當(dāng)前Session 下UserID為0的部分(未登陸情況下,Userid是0),UpdateID到當(dāng)前UserID ,該修改位于 Flow.php 下面function flow_update_cart($arr)

復(fù)制代碼代碼如下: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);

// 更新購(gòu)物車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'";

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

在用戶登陸后,F(xiàn)low.php打開(kāi)購(gòu)物車地方,需要調(diào)用一次自動(dòng)更新購(gòu)物車,

在$cart_goods = get_cart_goods();

之后增加如下代碼

復(fù)制代碼代碼如下: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);}

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

希望本文所述對(duì)大家的ecshop二次開(kāi)發(fā)有所幫助。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看CMS教程
易賢網(wǎng)手機(jī)網(wǎng)站地址:ecshop二次開(kāi)發(fā)之購(gòu)物車分析
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
相關(guān)閱讀CMS教程

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)