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

原创
2016-07-13 10:33:04 889浏览

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

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

_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); //向模板页传递查询结果

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/752566.htmlTechArticle在Ecmall的二次开发中,分页是必不可少的。这个系统已经自带了分页功能,下面来看看如何使用这个分页。 下面是一个自定义的类,用于查...

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
上一条:HTTP服务器是如何实现对PHP的支持的?_PHP教程 下一条:用PHP写一个Daemon守护进程_PHP教程

相关文章

查看更多