国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Ecshop > 正文

ECSHOP首頁最新交易滾動顯示的實現(xiàn)

2024-07-09 22:56:48
字體:
供稿:網(wǎng)友
在ECSHOP首頁添加最新交易滾動顯示功能,想要顯示的無非就是什么人在什么時間購買了什么東西,這樣分析下來我們需要去從數(shù)據(jù)庫讀取出來信息。從網(wǎng)上找到ecshop的數(shù)據(jù)字典,看了看 和咱們相關的表有三個ecs_order_info,ecs_order_goods,ecs_users,分別存儲了訂單信息,訂單對應的商品信息和購買商品的用戶信息。這三個表同 user_id,order_id和goods_id三個key來聯(lián)系,下面我們要寫出sql語句從中取出我們需要的那些信息,sql語句如下:
SELECT ecs_users.user_name, ecs_order_goods.goods_id,
            ecs_order_goods.goods_name, order_info.add_time
            FROM ecs_users, 
            (
                SELECT order_id, user_id, add_time
                FROM ecs_order_info
                ORDER BY ecs_order_info.add_time DESC 
                LIMIT 0 , 20
            ) AS order_info, 
            ecs_order_goods
            WHERE order_info.order_id = ecs_order_goods.order_id
            AND order_info.user_id = ecs_users.user_id;
  上面語句的意思從ecs_order_info里面提取前20個交易,然后根據(jù)order_id,goods_id和user_id的關聯(lián)來獲取用戶名、商品名、商品id和訂單時間。搞定了sql語句, 下面我們就要按照ecshop的模式來寫個函數(shù),這個函數(shù)從通過數(shù)據(jù)庫獲取sql語句的內(nèi)容,然后把這個sql的record封裝到一個array里面,傳給smarty模板來使用。 下面給出代碼,大家參考一下:
/**
         * 調(diào)用獲取最新購買者和物品檠?         *
         * @access  private
         * @return  array
         */

function index_get_recent_buy_query()
        {
            $sql = 'SELECT ecs_users.user_name, ecs_order_goods.goods_id,
                     ecs_order_goods.goods_name, ecs_order_info.add_time
                    FROM ecs_users, 
                    (
                        SELECT order_id, user_id, add_time
                        FROM ecs_order_info
                        ORDER BY ecs_order_info.add_time DESC 
                        LIMIT 0 , 20
                    ) AS ecs_order_info, 
                    ecs_order_goods
                    WHERE ecs_order_info.order_id = ecs_order_goods.order_id
                    AND ecs_order_info.user_id = ecs_users.user_id;';
 
            $all = $GLOBALS['db']->getAll($sql);
 
            $arr = array();
 
            foreach ($all AS $idx => $row)
            {
                $arr[$idx]['username']  = $row['user_name'];
                $arr[$idx]['goodName']  = $row['goods_name'];
                $arr[$idx]['goodID']    = $row['goods_id'];
                $arr[$idx]['add_time']   = local_date(
                  $GLOBALS['_CFG']['date_format'], $row['add_time']);
            }
 
            return $arr;
        }
  上面代碼使用了$GLOBALS['db']->getAll($sql);來獲取數(shù)據(jù)庫里面記錄,這個db是在init.php里面系統(tǒng)初始化加載好的全局變量,他負責和數(shù)據(jù)庫交互,獲取 數(shù)據(jù)等功能。有時間我寫幾篇ecshop代碼分析的文章,詳細講解一下ecshop的初始化過程,大家就可以了解ecshop高質(zhì)量的代碼了。下面的那個foreach做的而 工作其實就是把數(shù)據(jù)封裝到array,smarty在模板處理時數(shù)組友好的。上面只是獲取了array,下面的語句是賦值array到smarty模板”
$smarty->assign('recent_buys',     index_get_recent_buy_query());//獲取最新的購買者信息
把這句話加到index.php的類似的地方就可以,基本上在80多行,ecshop集中模板賦值的地方。在面我們來看看賦過去的值smarty模板是怎么用的。
  我們建立一個BusinessActivities.lbi來放我們的smarty模板內(nèi)容。下面是代碼:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!--{if $recent_buys}-->
    <ul> 
    {foreach from=$recent_buys item=buy_info}
    <li>· {$buy_info.username} 在 {$buy_info.add_time} 買了<a href='goods.php?id={$buy_info.goodID}'> {$buy_info.goodName}</a></li>
   {/foreach}
    </ul>
<!-- {/if} -->
  大家注意看上面的是來說明你的模板內(nèi)容基本信息的,這里用的是utf8,如果是gbk,要改成gbk哦。 是和我們上面php程序里面的$smarty->assign(’recent_buys’, index_get_recent_buy_query())對應的,若果你給recent_buys賦值, 并且這個值不為空或者0的話才顯示咱們的模板內(nèi)容。我們重點看,foreach是smarty模板內(nèi)置函數(shù),其 主要作用是遍歷傳入的數(shù)組,然后生成內(nèi)容,類似于其他語言里面的foreach。這句話就是遍歷recent_buys,然后把每次遍歷的項做buy_info,其實這個buy_info 就是咱們數(shù)據(jù)的2維數(shù)組的第二維了。你可以直接用{$buy_info.goodName}這種形式來調(diào)用你數(shù)組傳入的內(nèi)容。用smarty模板絕對的數(shù)據(jù)和現(xiàn)實分離,很爽的。
  下面你在你需要顯示的地方加入就可以顯示了。
提示:sql調(diào)用的時候一定要注意表名要換成你自己的表名
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 清涧县| 长泰县| 会东县| 原平市| 光山县| 远安县| 延寿县| 博爱县| 剑河县| 贵南县| 民勤县| 东方市| 师宗县| 阿拉善左旗| 中西区| 连江县| 鄯善县| 商河县| 武川县| 云安县| 托里县| 沭阳县| 建宁县| 融水| 富川| 琼海市| 阜宁县| 张家港市| 苏尼特右旗| 太原市| 太保市| 渝北区| 化隆| 年辖:市辖区| 莲花县| 营山县| 佛冈县| 波密县| 绥芬河市| 青冈县| 景东|