Einfache Paging-Klasse des CI-Frameworks

David Beckham
Freigeben: 2023-04-08 22:44:01
nach vorne
2310 Leute haben es durchsucht

Einfache Paging-Klasse des CI-Frameworks

Die Beispiele in diesem Artikel beschreiben die Verwendung einfacher Paging-Klassen im CI-Framework. Teilen Sie es allen als Referenz mit. Die Details lauten wie folgt:


/** * * 关于 页码有效性的判断需要加在 控制器中判断,即当页码数<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= ' '; var $cur_tag_close= ''; 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.'首页'.$this->first_tag_close; } //上一页 if($page_num > 1) { $n = $page_num - 1; $output .= $this->prev_tag_open.'上一页'.$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.''.$i.''.$this->cur_tag_close; }else if($i >= $pl && $i <= $pr) { $output .= $this->num_tag_open.''.$i.''.$this->num_tag_close; } } //下一页 if($page_num < $pages) { $n = $page_num + 1; $output .= $this->next_tag_open.'下一页'.$this->next_tag_close; } //末页 if($page_num < $pages) { $output .= $this->last_tag_open.'末页'.$this->last_tag_close; } $output.=$this->full_tag_close; return $output; } }
Nach dem Login kopieren

Rufen Sie den Controller an


$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();
Nach dem Login kopieren


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 = "首页 "; } if($this->page!=1){ $pagestr.= "上一页"; } for($i=$start;$i<=$end;$i++){ $pagestr.= "".$i." "; } if($this->page!=$this->pagenum){ $pagestr.="下一页"; } if($this->page+5<$this->pagenum){ $pagestr.="尾页 "; } return $pagestr; } } // 测试代码 $page = new page(100,10); $str=$page->getPage(); echo $str; ?>
Nach dem Login kopieren

Empfohlenes Tutorial: „PHP


Das obige ist der detaillierte Inhalt vonEinfache Paging-Klasse des CI-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!