CodeIgniter 的分页类调用并处理多参数

ci分页扩展类:

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * 分页类 初始化与控制
 * @author WangYongDong
 */
class Page {
    static function loadPage($iCount,$iPageSize,$sUrl) {
        //加载分页类
        $CI = & get_instance();
        $CI->load->library('pagination');
        
        $config['base_url'] = base_url().$sUrl;
        $config['total_rows'] = $iCount;        //总条数
        $config['per_page'] = $iPageSize;        //每页条数
        
        $config['num_links'] = 2;                //定义当前页的前后各有几个数字链接
        $config['use_page_numbers'] = TRUE;        //显示当前页码
        $config['first_link'] = '首页';
        $config['last_link'] = '末页';
        $config['next_link'] = '下一页';             // 下一页显示
        $config['prev_link'] = '上一页';             // 上一页显示
        
        $config['full_tag_open'] = '<p class="page-bor">';    //把打开的标签放在所有结果的左侧。
        $config['full_tag_close'] = '</p>';                    //把关闭的标签放在所有结果的右侧。
        
        $config['first_tag_open'] = '';        //“第一页”链接的打开标签。
        $config['first_tag_close'] = '';    //“第一页”链接的关闭标签。
        
        $config['last_tag_open'] = '';        //“最后一页”链接的打开标签。
        $config['last_tag_close'] = '';        //“最后一页”链接的关闭标签。
        
        $config['next_tag_open'] = '';        //“下一页”链接的打开标签。
        $config['next_tag_close'] = '';        //“下一页”链接的关闭标签。
        
        $config['prev_tag_open'] = '';        //“上一页”链接的打开标签。
        $config['prev_tag_close'] = '';        //“上一页”链接的关闭标签。
        
        $config['cur_tag_open'] = '<a class="page-othor current">';    //“当前页”链接的打开标签。
        $config['cur_tag_close'] = '</a>';                            //“当前页”链接的关闭标签。
        
        $config['num_tag_open'] = '';        //“数字”链接的打开标签。
        $config['num_tag_close'] = '';        //“数字”链接的关闭标签。
        
        $config['anchor_class'] = "class='page-othor'";        //给链接添加 CSS 类
        $config['page_query_string'] = TRUE;                //以?id=3&name=4
        $config['query_string_segment'] = 'page';            //设置分页参数
                
        $CI->pagination->initialize($config);                //执行分页方法
    }
    
    static function getParam($iPageSize,$pageId) {
        $pagenum = $iPageSize;
        $pageId = $pageId ? $pageId : 1;
        $start = ($pageId - 1) * $pagenum;
        $arr['start'] = $start;
        $arr['pagenum'] = $pagenum;
        return $arr;
    }
    
}

 

分页调用函数:

/**
     * 调用分页类
     */
    public function getPage($sTable,$sUrl,$pageId,$iPageNum=10,$sFilter='') {
        //调用page类
        $this->load->library('page');
        $iCount = getPageCount($sTable,$sFilter);
        $iPageSize = $iPageNum;
        $this->page->loadPage($iCount,$iPageSize,$sUrl);
        
        //总页数
        $num_pages = ceil($iCount/$iPageSize);
        if($pageId>$num_pages) {
            $pageId = $num_pages;
        }
        if($pageId<0) {
            $pageId = 1;
        }
        $arr = $this->page->getParam($iPageSize,$pageId);
        return $arr;
    }

 

调用实例:

//分页执行,无多余参数
        $pageId = $this->input->get('page');
        $arr = $this->public_model->getPage("links",'links?',$pageId);
        $data['list'] = $this->links_model->getLinksList($arr['start'],$arr['pagenum']);
        
        //分页执行,有其他参数
        //分页执行
        $pageId = $this->input->get('page');
        $sFilter = '';
        if(!empty($data['aFilter']['keyword'])) {
            $sFilter = ' AND title LIKE"%'.$data['aFilter']['keyword'].'%" ';
        }
        $arr = $this->public_model->getPage("article",'article?',$pageId,$sFilter);
        $data['list'] = $this->article_model->getArticleList($arr['start'],$arr['pagenum'],$data['aFilter']);

 

posted @ 2015-11-30 14:39  王永东gg  阅读(282)  评论(0)    收藏  举报