1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27


28


29


30


31


32


33


34


35


36


37


38


39


40


41


42


43


44


45


46


47


48


49


50


51


52


53


54


55


56


57


58


59


60


61


62


63


64


65


66


67


68


69


70


71


72


73


74


75


76


77


78


79


80


81


82


83


84


85


86


87


88


89


90


91


92


93


94


95


96


97


98


99


100


101


102


103


104


105


106


107


108


109


110


111


112


113


114


115


116


117


118


119


120


121


122


123


124


125


126


127


128


129


130


131


132


133


134


135


136


137


138


139


140


141


142


143


144


145


146


147


148


149


150


151


152


153


154


155


156


157


158


159


160


161


162


163


164


165


166


167


168


169


170


171


172


173


174


175


176


177


178


179


180


181


182


183


184


185


186


187


188


189


190


191


192


193


194


195


196


197


198


199


200


201


202


203


204


205


206


207


208


209


210


211


212


213


214


215


216


217


218


219


220


221


222


223


224


225


226


227


228


229


230


231


232


233


234


235


236


237


238


239




​<?php ​​​​if​​​ ​​(!defined(​​​​'BASEPATH'​​​​)) ​​​​exit​​​​(​​​​'No direct script access allowed'​​​​);​


 


​class​​​ ​​Mypage_class {​


​/**​


​* @author :leanhunter<heww@live.com>​


​* @create:2011-9-23​


​* 本分页类专为三段式CI分页缩写,即site_url('control/function/2');​


​*/​


 


​/**​


​* config​


​*/​


​public​​​ ​​$part​​​​=2;​​​​//控制数字列表当前页前后链接数量​


​public​​​ ​​$totalpage​​​​=0;​​​​//总页数​


​public​​​ ​​$url​​​​=​​​​''​​​​;​​​​//url地址,不含分页所在的段,形如:'control/function'​


​public​​​ ​​$total​​​​=0;​​​​//总条数​


​public​​​ ​​$perpage​​​​=5;​​​​//每页条数​


​public​​​ ​​$nowindex​​​​=1;​​​​//当前页​


​public​​​ ​​$seg​​​​=3;​​​​//页码参数取 index.php之后的段数,默认为3,即index.php/control/function/18 这种形式​


​public​​​ ​​$next_page​​​​=​​​​'下一页'​​​​;​​​​//下一页​


​public​​​ ​​$pre_page​​​​=​​​​'上一页'​​​​;​​​​//上一页​


​public​​​ ​​$first_page​​​​=​​​​'首页'​​​​;​​​​//首页​


​public​​​ ​​$last_page​​​​=​​​​'末页'​​​​;​​​​//尾页​


​/**​


​* constructor构造函数​


​*​


​* @param $params=array()​


​*/​


​public​​​ ​​function​​​ ​​__construct(​​​​$params​​​ ​​= ​​​​array​​​​())​


​{​


​if​​​ ​​(​​​​count​​​​(​​​​$params​​​​) > 0)​


​{​


​$this​​​​->initialize(​​​​$params​​​​);​


​}​


​log_message(​​​​'debug'​​​​, ​​​​"MyPage Class Initialized"​​​​);​


​}​


 


​function​​​ ​​initialize(​​​​$params​​​​)​


​{​


​if​​​ ​​(​​​​count​​​​(​​​​$params​​​​) > 0)​


​{​


​$this​​​​->total=isset(​​​​$params​​​​[​​​​'total'​​​​]) ? ​​​​intval​​​​(​​​​$params​​​​[​​​​'total'​​​​]) : 0;​​​​//总条数​


​$this​​​​->perpage=isset(​​​​$params​​​​[​​​​'perpage'​​​​]) ? ​​​​intval​​​​(​​​​$params​​​​[​​​​'perpage'​​​​]) : 5;​​​​//每页条数​


​$this​​​​->nowindex=isset(​​​​$params​​​​[​​​​'nowindex'​​​​]) ? ​​​​intval​​​​(​​​​$params​​​​[​​​​'nowindex'​​​​]) : 1;​​​​//当前页​


​$this​​​​->url=isset(​​​​$params​​​​[​​​​'url'​​​​]) ? ​​​​$params​​​​[​​​​'url'​​​​] : ​​​​''​​​​;​​​​//url地址,不含分页所在的段,形如:'control/function'​


​$this​​​​->part=isset(​​​​$params​​​​[​​​​'part'​​​​]) ? ​​​​$params​​​​[​​​​'part'​​​​] : 2;​​​​//控制数字列表当前页前后链接数量​


​$this​​​​->seg=isset(​​​​$params​​​​[​​​​'seg'​​​​]) ? ​​​​$params​​​​[​​​​'seg'​​​​] : 3;​​​​//页码参数取 index.php之后的段数,默认为3,即index.php/control/function/18 这种形式​


​$this​​​​->next_page=isset(​​​​$params​​​​[​​​​'next_page'​​​​]) ? ​​​​$params​​​​[​​​​'next_page'​​​​] : ​​​​'下一页'​​​​;​


​$this​​​​->pre_page=isset(​​​​$params​​​​[​​​​'pre_page'​​​​]) ? ​​​​$params​​​​[​​​​'pre_page'​​​​] : ​​​​'上一页'​​​​;​


​$this​​​​->first_page=isset(​​​​$params​​​​[​​​​'first_page'​​​​]) ? ​​​​$params​​​​[​​​​'first_page'​​​​] : ​​​​'首页'​​​​;​


​$this​​​​->last_page=isset(​​​​$params​​​​[​​​​'last_page'​​​​]) ? ​​​​$params​​​​[​​​​'last_page'​​​​] : ​​​​'末页'​​​​;​


​}​


​$this​​​​->totalpage=​​​​ceil​​​​( ​​​​$this​​​​->total / ​​​​$this​​​​->perpage);​​​​//总页数​


​$this​​​​->_myset_url(​​​​$this​​​​->url);​​​​//设置链接地址​


​}​


 


​/**​


​* 获取显示"下一页"的代码​


​*​


​* @param string $style​


​* @return string​


​*/​


​function​​​ ​​next_page(​​​​$style​​​​=​​​​'pg_next'​​​​)​


​{​


​if​​​​(​​​​$this​​​​->nowindex < ​​​​$this​​​​->totalpage){​


​return​​​ ​​$this​​​​->_get_link(​​​​$this​​​​->_get_url(​​​​$this​​​​->nowindex + 1), ​​​​$this​​​​->next_page, ​​​​$style​​​​);​


​}​


​return​​​ ​​'<span class="'​​​​.​​​​$style​​​​.​​​​'">'​​​​.​​​​$this​​​​->next_page.​​​​'</span>'​​​​;​


​}​


 


​/**​


​* 获取显示“上一页”的代码​


​*​


​* @param string $style​


​* @return string​


​*/​


​function​​​ ​​pre_page(​​​​$style​​​​=​​​​'pg_pre'​​​​)​


​{​


​if​​​​(​​​​$this​​​​->nowindex > 1){​


​return​​​ ​​$this​​​​->_get_link(​​​​$this​​​​->_get_url(​​​​$this​​​​->nowindex-1),​​​​$this​​​​->pre_page,​​​​$style​​​​);​


​}​


​return​​​ ​​'<span class="'​​​​.​​​​$style​​​​.​​​​'">'​​​​.​​​​$this​​​​->pre_page.​​​​'</span>'​​​​;​


​}​


 


​/**​


​* 获取显示“首页”的代码​


​*​


​* @param string $style​


​* @return string​


​*/​


​function​​​ ​​first_page(​​​​$style​​​​=​​​​'pg_first'​​​​)​


​{​


​if​​​​(​​​​$this​​​​->nowindex == 1){​


​return​​​ ​​'<span class="'​​​​.​​​​$style​​​​.​​​​'">'​​​​.​​​​$this​​​​->first_page.​​​​'</span>'​​​​;​


​}​


​return​​​ ​​$this​​​​->_get_link(​​​​$this​​​​->_get_url(1),​​​​$this​​​​->first_page,​​​​$style​​​​);​


​}​


 


​/**​


​* 获取显示“尾页”的代码​


​*​


​* @param string $style​


​* @return string​


​*/​


​function​​​ ​​last_page(​​​​$style​​​​=​​​​'pg_last'​​​​)​


​{​


​if​​​​(​​​​$this​​​​->nowindex == ​​​​$this​​​​->totalpage){​


​return​​​ ​​'<span class="'​​​​.​​​​$style​​​​.​​​​'">'​​​​.​​​​$this​​​​->last_page.​​​​'</span>'​​​​;​


​}​


​return​​​ ​​$this​​​​->_get_link(​​​​$this​​​​->_get_url(​​​​$this​​​​->totalpage),​​​​$this​​​​->last_page,​​​​$style​​​​);​


​}​


​/**​


​* 获取显示“当前页”的代码​


​*​


​* @param string $style​


​* @param string $nowindex_style​


​* @return string​


​*/​


​function​​​ ​​nowbar(​​​​$style​​​​=​​​​'pg_link'​​​​,​​​​$nowindex_style​​​​=​​​​'pg_curr'​​​​)​


​{​


​$plus​​​​=​​​​$this​​​​->part;​


​$begin​​​​=1;​


​$end​​​​=​​​​$this​​​​->totalpage;​


 


​if​​​ ​​(​​​​$this​​​​->nowindex > ​​​​$plus​​​​) {​


​$begin​​​​=​​​​$this​​​​->nowindex-​​​​$plus​​​​;​


​$end​​​ ​​= ​​​​$this​​​​->nowindex + ​​​​$plus​​​​;​


​if​​​ ​​(​​​​$end​​​ ​​> ​​​​$this​​​​->totalpage) {​


​$begin​​​​= (​​​​$begin​​​ ​​- ​​​​$end​​​ ​​+ ​​​​$this​​​​->totalpage>0) ? (​​​​$begin​​​ ​​- ​​​​$end​​​ ​​+ ​​​​$this​​​​->totalpage) : 1;​


​$end​​​ ​​= ​​​​$this​​​​->totalpage;​


​}​


​} ​​​​else​​​ ​​{​


​$begin​​​​=1;​


​$end​​​ ​​= ​​​​$begin​​​ ​​+ 2*​​​​$plus​​​​;​


​$end​​​ ​​= ​​​​$end​​​ ​​> ​​​​$this​​​​->totalpage ? ​​​​$this​​​​->totalpage : ​​​​$end​​​​;​


​}​


​$out​​​​=​​​​''​​​​;​


​for​​​​(​​​​$i​​​ ​​= ​​​​$begin​​​​;​​​​$i​​​ ​​<= ​​​​$end​​​​; ​​​​$i​​​​++)​


​{​


​if​​​​(​​​​$i​​​ ​​!= ​​​​$this​​​​->nowindex){​


​$out​​​​.= ​​​​$this​​​​->_get_link(​​​​$this​​​​->_get_url(​​​​$i​​​​),​​​​$i​​​​,​​​​$style​​​​);​


​}​​​​else​​​​{​


​$out​​​​.= ​​​​'<span class="'​​​​.​​​​$nowindex_style​​​​.​​​​'">'​​​​.​​​​$i​​​​.​​​​'</span>'​​​​;​


​}​


 


​}​


 


​return​​​ ​​$out​​​​;​


​}​


​/**​


​* 获取显示跳转按钮的代码​


​*​


​* @return string​


​*/​


​function​​​ ​​select()​


​{​


​$out​​​​=​​​​'<select name="pagelect" class="pg_select">'​​​​;​


​for​​​​(​​​​$i​​​​=1;​​​​$i​​​ ​​<= ​​​​$this​​​​->totalpage;​​​​$i​​​​++)​


​{​


​if​​​​(​​​​$i​​​​==​​​​$this​​​​->nowindex){​


​$out​​​​.=​​​​'<option value="'​​​​.​​​​$i​​​​.​​​​'" selected>'​​​​.​​​​$i​​​​.​​​​'</option>'​​​​;​


​}​​​​else​​​​{​


​$out​​​​.=​​​​'<option value="'​​​​.​​​​$i​​​​.​​​​'">'​​​​.​​​​$i​​​​.​​​​'</option>'​​​​;​


​}​


​}​


​$out​​​​.=​​​​'</select>'​​​​;​


​return​​​ ​​$out​​​​;​


​}​


​/**​


​* 控制分页显示风格​


​*​


​* @param int $mode​


​* @return string​


​*/​


​function​​​ ​​show(​​​​$mode​​​​=1)​


​{​


​switch​​​ ​​(​​​​$mode​​​​)​


​{​


​case​​​ ​​1:​​​​//上一页 1 2 3 4 5 下一页 第x页​


​return​​​ ​​$this​​​​->pre_page().​​​​$this​​​​->nowbar().​​​​$this​​​​->next_page();​


​break​​​​;​


​case​​​ ​​2:​​​​//首页 上一页 1 2 3 4 5 下一页  末页 第x页​


​return​​​ ​​$this​​​​->first_page().​​​​$this​​​​->pre_page().​​​​$this​​​​->nowbar().​​​​$this​​​​->next_page().​​​​$this​​​​->last_page().​​​​'&nbsp;第'​​​​.​​​​$this​​​​->select().​​​​'页'​​​​;​


​break​​​​;​


​case​​​ ​​3:​​​​//上一页 1 2 3 4 5 下一页​


​return​​​ ​​$this​​​​->pre_page().​​​​$this​​​​->nowbar().​​​​$this​​​​->next_page();​


​break​​​​;​


​default​​​​:​​​​//上一页 1 2 3 4 5 下一页  第x页​


​return​​​ ​​$this​​​​->pre_page().​​​​$this​​​​->nowbar().​​​​$this​​​​->next_page().​​​​'&nbsp;第'​​​​.​​​​$this​​​​->select().​​​​'页'​​​​;​


​break​​​​;​


​}​


​}​


​/*----------------private function (私有方法)-----------------------------------------------------------*/​


 


​/**​


​* 设置url头地址​


​* @param: String $url​


​* @return boolean​


​*/​


​public​​​ ​​function​​​ ​​_myset_url(​​​​$url​​​​)​


​{​


​$CI​​​​=&get_instance();​


​$CI​​​​->load->helper(​​​​'url'​​​​);​


​if​​​ ​​(​​​​empty​​​​(​​​​$url​​​​)) {​​​​//如果$url为空,要用uri_string()函数取uri段​


​$cururl​​​​=​​​​''​​​​;​


​$cururl​​​​=uri_string();​


​$segementarray​​​​=​​​​explode​​​​(​​​​"/"​​​​,​​​​$cururl​​​​);​


​$c​​​​=0;​


​for​​​ ​​(​​​​$i​​​​=0; ​​​​$i​​​ ​​< sizeof(​​​​$segementarray​​​​); ​​​​$i​​​​++) {​


​if​​​ ​​(​​​​$segementarray​​​​[​​​​$i​​​​] && ​​​​$c​​​ ​​< ​​​​$this​​​​->seg-1) {​​​​//取uri_string()的seg-1段​


​$url​​​​=​​​​$url​​​​.​​​​'/'​​​​.​​​​$segementarray​​​​[​​​​$i​​​​];​


​$c​​​​++;​


​}​


​}  ​


​}​


​$this​​​​->url=site_url(​​​​$url​​​​);​


​}​


 


​/**​


​* 为指定的页面返回地址值​


​*​


​* @param int $pagenum​


​* @return string $url​


​*/​


​function​​​ ​​_get_url(​​​​$pagenum​​​​=1)​


​{​


​return​​​ ​​$this​​​​->url.​​​​'/'​​​​.​​​​$pagenum​​​​;​


​}​


 


​/**​


​* 获取链接地址​


​*/​


​function​​​ ​​_get_link(​​​​$url​​​​,​​​​$text​​​​,​​​​$style​​​​=​​​​''​​​​){​


​$style​​​​=​​​​$style​​​​?​​​​'class="'​​​​.​​​​$style​​​​.​​​​'"'​​​​:​​​​''​​​​;​


​return​​​ ​​'<a '​​​​.​​​​$style​​​​.​​​​' href="'​​​​.​​​​$url​​​​.​​​​'">'​​​​.​​​​$text​​​​.​​​​'</a>'​​​​;​


​}​


 


​}​


​?>​



 

把类下了放到library文件夹中,在需要分页的控制器中初始化,部分代码如下:




​​?​​



1


2


3


4


5


6


7


8


9




​$page_config​​​​[​​​​'perpage'​​​​]=5;   ​​​​//每页条数​


​$page_config​​​​[​​​​'part'​​​​]=2;​​​​//当前页前后链接数量​


​$page_config​​​​[​​​​'url'​​​​]=​​​​'work/managework'​​​​;​​​​//url​


​$page_config​​​​[​​​​'seg'​​​​]=3;​​​​//参数取 index.php之后的段数,默认为3,即index.php/control/function/18 这种形式​


​$page_config​​​​[​​​​'nowindex'​​​​]=​​​​$this​​​​->uri->segment(​​​​$page_config​​​​[​​​​'seg'​​​​]) ? ​​​​$this​​​​->uri->segment(​​​​$page_config​​​​[​​​​'seg'​​​​]):1;​​​​//当前页​


​$this​​​​->load->library(​​​​'mypage_class'​​​​);​


​$countnum​​​​=​​​​$this​​​​->Work_mdl->count_work();​​​​//得到记录总数​


​$page_config​​​​[​​​​'total'​​​​]=​​​​$countnum​​​​[​​​​'count(*)'​​​​];​


​$this​​​​->mypage_class->initialize(​​​​$page_config​​​​);​



视图里,在需要显示分页条的地方,添加:




​​?​​



1


2


3




​<div ​​​​class​​​​=​​​​"page"​​​​>​


​<?php ​​​​echo​​​ ​​$this​​​​->mypage_class->show(1); ?>​


​</div>​



我自己山寨了一下淘宝的分页的css:




​​?​​



1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27


28


29


30


31


32


33


34


35


36


37


38


39


40


41


42


43


44


45


46


47


48


49


50




​/******************** page **************************/​


​.page{​


​font-size: 12px;​


​height: 30px;​


​text-align: right;​


​padding-right:120px;​


​}​


​.pg_pre,.pg_next{​


​border: 1px solid #ccc;​


​margin:0 3px;​


​background-image: url(​​​​"../image/icon_pg.gif"​​​​);​


​background-repeat:no-repeat;​


​}​


​.pg_pre{​


​padding: 3px 8px 3px 20px;​


​background-position:7px 3px;​


​}​


​a.pg_pre{​


​background-position:7px -19px;​


​}​


​.pg_next{​


​padding: 3px 20px 3px 8px;​


​background-position:-22px 3px;​


​}​


​a.pg_next{​


​background-position:-22px -19px;​


​}​


 


​.pg_link{​


​padding: 3px 8px;​


​margin:0 3px;​


​border: 1px solid #ccc;​


​}​


​.pg_link:hover,a.pg_next:hover,a.pg_pre:hover{​


​border: 1px solid #A9C9E2;​


​color: #137cce;​


​}​


​.pg_curr{​


​padding: 3px 8px;​


​margin:0 3px;​


​color: #137cce;​


​#E8F5FE;​


​border: 1px solid #A9C9E2;​


 


​}​


​.pg_select{​


​border:1px solid #ccc;​


​padding:2px;​


​margin:0 5px;​


​}​



 

 

  css中用到的图片如下:

***CI分页:为CodeIgniter写的分页类_php

效果图示例:

***CI分页:为CodeIgniter写的分页类_当前页_02