本文实例讲述了CI框架简单分页类用法。分享给大家供大家参考,具体如下:
/** * * 关于 页码有效性的判断需要加在 控制器中判断,即当页码数<1或者>总页数 * */ class Custom_pagination { var $page_url = \'\'; //分页目标URL var $page_size = 10; //每一页行数 var $page_num = 1;//页码 var $rows_num= \'\';//数据总行数 var $links_num= 3;//选中链接前后的链接数,必须大于等于1 var $anchor_class= \'\';//链接样式类 var $current_class= \'\';//当前页样式类 var $full_tag_open= \'\';//分页开始标签 var $full_tag_close= \'\';//分页结束标签 var $info_tag_open= \'\'; var $info_tag_close= \' \'; var $first_tag_open= \'\'; var $first_tag_close= \' \'; var $last_tag_open= \' \'; var $last_tag_close= \'\'; var $cur_tag_open= \' <strong>\'; var $cur_tag_close= \'</strong>\'; var $next_tag_open= \' \'; var $next_tag_close= \' \'; var $prev_tag_open= \' \'; var $prev_tag_close= \'\'; var $num_tag_open= \' \'; var $num_tag_close= \'\'; public function __construct($params = array()) { if (count($params) > 0) { $this->init($params); } } function init($params = array()) //初始化数据 { if (count($params) > 0) { foreach ($params as $key => $val) { if (isset($this->$key)) { $this->$key = $val; } } } } function create_links() { /////////////////////////////////////////////////////// //准备数据 /////////////////////////////////////////////////////// $page_url = $this->page_url; $rows_num = $this->rows_num; $page_size = $this->page_size; $links_num = $this->links_num; if ($rows_num == 0 OR $page_size == 0) { return \'\'; } $pages = intval($rows_num/$page_size); if ($rows_num % $page_size) { //有余数pages+1 $pages++; }; $page_num = $this->page_num < 1 ? \'1\' : $this->page_num; $anchor_class = \'\'; if($this->anchor_class !== \'\') { $anchor_class = \'class=\"\'.$this->anchor_class.\'\" \'; } $current_class = \'\'; if($this->current_class !== \'\') { $current_class = \'class=\"\'.$this->current_class.\'\" \'; } if($pages == 1) { return \'\'; } if($links_num < 0) { return \'- -!links_num必须大于等于0\'; } //////////////////////////////////////////////////////// //创建链接开始 //////////////////////////////////////////////////////// $output = $this->full_tag_open; $output .= $this->info_tag_open.\'共\'.$rows_num.\'条数据 第 \'.$page_num.\'/\'.$pages.\' 页\'.$this->info_tag_close; //首页 if($page_num > 1) { $output .= $this->first_tag_open.\'<a \'.$anchor_class.\' href=\"\'.site_url($page_url).\'\" rel=\"external nofollow\" >首页</a>\'.$this->first_tag_close; } //上一页 if($page_num > 1) { $n = $page_num - 1; $output .= $this->prev_tag_open.\'<a \'.$anchor_class.\' href=\"\'.site_url($page_url.\'/\'.$n).\'\" rel=\"external nofollow\" rel=\"external nofollow\" >上一页</a>\'.$this->prev_tag_close; } //pages for($i=1;$i<=$pages;$i++) { $pl = $page_num - $links_num < 0 ? 0 : $page_num - $links_num; $pr = $page_num + $links_num > $pages ? $pages : $page_num + $links_num; //判断链接个数是否太少,举例,假设links_num = 2,则链接个数不可少于 5 个,主要是 当page_num 等于 1, 2 和 n,n-1的时候 if($pr < 2 * $links_num + 1) { $pr = 2 * $links_num + 1; } if($pl > $pages-2 * $links_num) { $pl = $pages - 2 * $links_num; } if($i == $page_num) { //current page $output .= $this->cur_tag_open.\'<span \'.$current_class.\' >\'.$i.\'</span>\'.$this->cur_tag_close; }else if($i >= $pl && $i <= $pr) { $output .= $this->num_tag_open.\'<a \'.$anchor_class.\' href=\"\'.site_url($page_url.\'/\'.$i).\'\" rel=\"external nofollow\" >\'.$i.\'</a>\'.$this->num_tag_close; } } //下一页 if($page_num < $pages) { $n = $page_num + 1; $output .= $this->next_tag_open.\'<a \'.$anchor_class.\' href=\"\'.site_url($page_url.\'/\'.$n).\'\" rel=\"external nofollow\" rel=\"external nofollow\" >下一页</a>\'.$this->next_tag_close; } //末页 if($page_num < $pages) { $output .= $this->last_tag_open.\'<a \'.$anchor_class.\' href=\"\'.site_url($page_url.\'/\'.$pages).\'\" rel=\"external nofollow\" >末页</a>\'.$this->last_tag_close; } $output.=$this->full_tag_close; return $output; } }
控制器里调用
$config[\'page_url\'] = \'about/science\'; $config[\'page_size\'] = $pagesize; $config[\'rows_num\'] = $num_rows; $config[\'page_num\'] = $page; $this->load->library(\'Custom_pagination\'); $this->custom_pagination->init($config); echo $this->custom_pagination->create_links();
<?php class page{ public $page; //当前页 public $pagenum; // 页数 public $pagesize; // 每页显示条数 public function __construct($count, $pagesize){ $this->pagenum = ceil($count/$pagesize); $this->pagesize = $pagesize; $this->page =(isset($_GET[\'p\'])&&$_GET[\'p\']>0) ? intval($_GET[\'p\']) : 1; } /** * 获得 url 后面GET传递的参数 */ public function getUrl(){ $url = \'index.php?\'.http_build_query($_GET); $url = preg_replace(\'/[?,&]p=(\\w)+/\',\'\',$url); $url .= (strpos($url,\"?\") === false) ? \'?\' : \'&\'; return $url; } /** * 获得分页HTML */ public function getPage(){ $url = $this->getUrl(); $start = $this->page-5; $start=$start>0 ? $start : 1; $end = $start+9; $end = $end<$this->pagenum ? $end : $this->pagenum; $pagestr = \'\'; if($this->page>5){ $pagestr = \"<a href=\".$url.\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" p=1\".\">首页</a> \"; } if($this->page!=1){ $pagestr.= \"<a href=\".$url.\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" p=\".($this->page-1).\">上一页</a>\"; } for($i=$start;$i<=$end;$i++){ $pagestr.= \"<a href=\".$url.\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" p=\".$i.\">\".$i.\"</a> \"; } if($this->page!=$this->pagenum){ $pagestr.=\"<a href=\".$url.\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" p=\".($this->page+1).\">下一页</a>\"; } if($this->page+5<$this->pagenum){ $pagestr.=\"<a href=\".$url.\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" rel=\"external nofollow\" p=\".$this->pagenum.\">尾页</a> \"; } return $pagestr; } } // 测试代码 $page = new page(100,10); $str=$page->getPage(); echo $str; ?>
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
© 版权声明
THE END
暂无评论内容