Home  >  Article  >  php教程  >  Ecmall自带的分页功能的源码实现

Ecmall自带的分页功能的源码实现

WBOY
WBOYOriginal
2016-06-13 09:38:111059browse

在Ecmall的二次开发中,分页是必不可少的。这个系统已经自带了分页功能,下面来看看如何使用这个分页。

下面是一个自定义的类,用于查看订单的详细情况。关键在于get_order_data()这个方法,分页的使用也在这个方法的内部了。应该有的注释都有了,应该会比较容易懂,我不就多说了。

<?php
define('NUM_PER_PAGE', 15);        // 每页显示数量
class NowaMagicApp extends MallbaseApp  
{  
	public function index()  
	{
		/* 分页信息 */
        $page = $this->_get_page(NUM_PER_PAGE);
        $page['item_count'] = $stats['total_count'];
        $this->_format_page($page);
        $this->assign('page_info', $page);
     	$this->display('gorder.index.html');   
	}  
	
	/* 订单记录 */
    function orderslog()
    {
		$goods_id = empty($_GET['id']) ? 0 : intval($_GET['id']);
		if (!$goods_id)
        {
            $this->show_warning('Hacking Attempt');
            return;
        }
		
		$data = $this -> get_order_data($goods_id);
		
		if ($data === false)
        {
            return;
        }
		
		$this->assign('order', $data);
        $this->display('gorder.index.html');
    }
	
	function get_order_data($goods_id)
	{
		//clean_cache();
		$cache_server =& cache_server();
		//print_r($cache_server);
		$key = 'order_' . $goods_id;
		//$key = $this->_get_cache_id();
		$r = $cache_server->get($key);
		$cached = true;
		
		$db = &db();
		
		$sql = "select count(*)
				from shop_order a, shop_order_extm b, shop_order_goods c
				where a.order_id = b.order_id and b.order_id = c.order_id
				and c.goods_id = '".$goods_id."'
				and a.status != '11'
				and a.status != '0'
				and a.status != '20'
				order by a.add_time desc ";
		//echo $sql;
		$num = $db -> getone($sql);				//求出总记录数
		$page = $this->_get_page(NUM_PER_PAGE);	//每页显示的条数,默认是10条
		$page['item_count'] = $num;				// 返回一个数组$page,$page['limit']=0,10
		$this->_format_page($page);				//格式化分页
		
		$sql2 = "select a.order_id, a.buyer_name, a.add_time, a.status, b.phone_tel, b.phone_mob, b.consignee, c.price, c.quantity, c.goods_id 
				from shop_order a, shop_order_extm b, shop_order_goods c
				where a.order_id = b.order_id and b.order_id = c.order_id
				and c.goods_id = '".$goods_id."'
				and a.status != '11'
				and a.status != '0'
				and a.status != '20'
				order by a.add_time desc limit ".$page['limit'];
		
		$result = $db -> query($sql2);
		
		$this -> assign('page_info',$page); 	//向模板页传递页数
		$this -> assign('que',$sql2); 	//向模板页传递查询结果
		
		//$r = array();
		while($myrow = $db -> fetch_array($result))
		{
			$r[] = $myrow;
		}
		$cache_server->set($key, $r, 1);
		return $r;
	}
	
}
?>

简化如下:

		Define("LIMIT",10);
		$goods_mod = & db('test');//构建实体模型(操作表)
        $count = 'select count(id) from test';
        $num = $goods_mod -> getone($count);//求出总记录数
        
        $page = $this->_get_page(LIMIT);//每页显示的条数,默认是10条
        $page['item_count'] = $num;// 返回一个数组$page,$page['limit']=0,10
        $this->_format_page($page);//格式化分页
        $sql = 'select id,title,content from test order by id desc limit '.$page['limit']; 
        $que = $goods_mod -> getAll($sql);//查询记录
        $this -> assign('page_info',$page); //向模板页传递页数
        $this -> assign('que',$que); //向模板页传递查询结果
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn