欢迎来到[自学php网] ①群 AG亚游集团

AG亚游集团 > php专栏 > php分页 >

php 多风格的分页类(支持ajax分页) - php分页

来源:自学PHP网 ?? 时间:2014-11-30 14:41?作者:

[导读] ?php/***example:*模式四种分页模式:require_once(#39;../libs/classes/page.class.php#39;);$page=newpage(array(#39;total#39;=10......

php 多风格的分页类(支持ajax分页)

  1. <?php 
  2. /** 
  3. * example: 
  4. * 模式四种分页模式: 
  5.    require_once('../libs/classes/page.class.php'); 
  6.    $page=new page(array('total'=>1000,'perpage'=>20)); 
  7.    echo 'mode:1<br>'.$page->show(); 
  8.    echo '<hr>mode:2<br>'.$page->show(2); 
  9.    echo '<hr>mode:3<br>'.$page->show(3); 
  10.    echo '<hr>mode:4<br>'.$page->show(4); 
  11.    开启AJAX: 
  12.    $ajaxpage=new page(array 
  13. ('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test')); 
  14.    echo 'mode:1<br>'.$ajaxpage->show(); 
  15.    采用继承自定义分页显示模式: 
  16. */ 
  17. class page 
  18. /** 
  19. * config ,public 
  20. */ 
  21. var $page_name="PB_page";/page标签,用来控制url页 
  22. var $next_page='>';/下一页 
  23. var $pre_page='<';/上一页 
  24. var $first_page='First';/首页 
  25. var $last_page='Last';/尾页 
  26. var $pre_bar='<<';/上一分页条 
  27. var $next_bar='>>';/下一分页条 
  28. var $format_left='['
  29. var $format_right=']'
  30. var $is_ajax=false;/是否支持AJAX分页模式 
  31. /** 
  32. * private 
  33. * 
  34. */ 
  35. var $pagebarnum=10;/控制记录条的个数。 
  36. var $totalpage=0;/总页数 
  37. var $ajax_action_name='';/AJAX动作名 
  38. /开源代码phpfensi.com 
  39. var $nowindex=1;/当前页 
  40. var $url="";/url地址头 
  41. var $offset=0; 
  42. /** 
  43. * constructor构造函数 
  44. * 
  45. * @param array $array['total'],$array['perpage'],$array['nowindex'],$array 
  46. ['url'],$array['ajax'] 
  47. */ 
  48. function page($array
  49. if(is_array($array)){ 
  50.      if(!array_key_exists('total',$array))$this->error(__FUNCTION__,'need a param 
  51. of total'); 
  52.      $total=intval($array['total']); 
  53.      $perpage=(array_key_exists('perpage',$array))?intval($array['perpage']):10; 
  54.      $nowindex=(array_key_exists('nowindex',$array))?intval($array 
  55. ['nowindex']):''
  56.      $url=(array_key_exists('url',$array))?$array['url']:''
  57. }else
  58.      $total=$array
  59.      $perpage=10; 
  60.      $nowindex=''
  61.      $url=''
  62. if((!is_int($total))||($total<0))$this->error(__FUNCTION__,$total.' is not a 
  63. positive integer!'); 
  64. if((!is_int($perpage))||($perpage<=0))$this->error(__FUNCTION__,$perpage.' is not 
  65. a positive integer!'); 
  66. if(!emptyempty($array['page_name']))$this->set('page_name',$array['page_name']);/设置 
  67. pagename 
  68. $this->_set_nowindex($nowindex);/设置当前页 
  69. $this->_set_url($url);/设置链接地址 
  70. $this->totalpage=ceil($total/$perpage); 
  71. $this->offset=($this->nowindex-1)*$perpage
  72. if(!emptyempty($array['ajax']))$this->open_ajax($array['ajax']);/打开AJAX模式 
  73. /** 
  74. * 设定类中指定变量名的值,如果改变量不属于这个类,将throw一个exception 
  75. * 
  76. * @param string $var 
  77. * @param string $value 
  78. */ 
  79. function set($var,$value
  80. if(in_array($var,get_object_vars($this))) 
  81.      $this->$var=$value
  82. else { 
  83.    $this->error(__FUNCTION__,$var." does not belong to PB_Page!"); 
  84. /** 
  85. * 打开倒AJAX模式 
  86. * 
  87. * @param string $action 默认ajax触发的动作。 
  88. */ 
  89. function open_ajax($action
  90. $this->is_ajax=true; 
  91. $this->ajax_action_name=$action
  92. /** 
  93. * 获取显示"下一页"的代码 
  94. * 
  95. * @param string $style 
  96. * @return string 
  97. */ 
  98. function next_page($style=''
  99. if($this->nowindex<$this->totalpage){ 
  100.    return $this->_get_link($this->_get_url($this->nowindex+1),$this
  101. >next_page,$style); 
  102. return '<span class=".$style.">'.$this->next_page.'</span>'
  103. /** 
  104. * 获取显示“上一页”的代码 
  105. * 
  106. * @param string $style 
  107. * @return string 
  108. */ 
  109. function pre_page($style=''
  110. if($this->nowindex>1){ 
  111.    return $this->_get_link($this->_get_url($this->nowindex-1),$this
  112. >pre_page,$style); 
  113. return '<span class=".$style.">'.$this->pre_page.'</span>'
  114. /** 
  115. * 获取显示“首页”的代码 
  116. * 
  117. * @return string 
  118. */ 
  119. function first_page($style=''
  120. if($this->nowindex==1){ 
  121.       return '<span class=".$style.">'.$this->first_page.'</span>'
  122. return $this->_get_link($this->_get_url(1),$this->first_page,$style); 
  123. /** 
  124. * 获取显示“尾页”的代码 
  125. * 
  126. * @return string 
  127. */ 
  128. function last_page($style=''
  129. if($this->nowindex==$this->totalpage){ 
  130.       return '<span class=".$style.">'.$this->last_page.'</span>'
  131. return $this->_get_link($this->_get_url($this->totalpage),$this
  132. >last_page,$style); 
  133. function nowbar($style='',$nowindex_style=''
  134. $plus=ceil($this->pagebarnum/2); 
  135. if($this->pagebarnum-$plus+$this->nowindex>$this->totalpage)$plus=($this
  136. >pagebarnum-$this->totalpage+$this->nowindex); 
  137. $begin=$this->nowindex-$plus+1; 
  138. $begin=($begin>=1)?$begin:1; 
  139. $return=''
  140. for($i=$begin;$i<$begin+$this->pagebarnum;$i++) 
  141.    if($i<=$this->totalpage){ 
  142.     if($i!=$this->nowindex) 
  143.         $return.=$this->_get_text($this->_get_link($this->_get_url 
  144. ($i),$i,$style)); 
  145.     else 
  146.         $return.=$this->_get_text('<span 
  147. class=".$nowindex_style.">'.$i.'</span>'); 
  148.    }else
  149.     break
  150.    } 
  151.    $return.="n"
  152. unset($begin); 
  153. return $return
  154. /** 
  155. * 获取显示跳转按钮的代码 
  156. * 
  157. * @return string 
  158. */ 
  159. function select() 
  160.    $return='<select name="PB_Page_Select">'
  161. for($i=1;$i<=$this->totalpage;$i++) 
  162.    if($i==$this->nowindex){ 
  163.     $return.='<option value="'.$i.'" selected>'.$i.'</option>'
  164.    }else
  165.     $return.='<option value="'.$i.'">'.$i.'</option>'
  166.    } 
  167. unset($i); 
  168. $return.='</select>'
  169. return $return
  170. /** 
  171. * 获取mysql教程 语句中limit需要的值 
  172. * 
  173. * @return string 
  174. */ 
  175. function offset() 
  176. return $this->offset; 
  177. /** 
  178. * 控制分页显示风格  
  179. * 
  180. * @param int $mode 
  181. * @return string 
  182. */ 
  183. function show($mode=1) 
  184. switch ($mode
  185.    case '1'
  186.     $this->next_page='下一页'
  187.     $this->pre_page='上一页'
  188.     return $this->pre_page().$this->nowbar().$this->next_page().'第'.$this
  189. >select().'页'
  190.     break
  191.    case '2'
  192.     $this->next_page='下一页'
  193.     $this->pre_page='上一页'
  194.     $this->first_page='首页'
  195.     $this->last_page='尾页'
  196.     return $this->first_page().$this->pre_page().'[第'.$this
  197. >nowindex.'页]'.$this->next_page().$this->last_page().'第'.$this->select().'页'
  198.     break
  199.    case '3'
  200.     $this->next_page='下一页'
  201.     $this->pre_page='上一页'
  202.     $this->first_page='首页'
  203.     $this->last_page='尾页'
  204.     return $this->first_page().$this->pre_page().$this->next_page().$this
  205. >last_page(); 
  206.     break
  207.    case '4'
  208.     $this->next_page='下一页'
  209.     $this->pre_page='上一页'
  210.     return $this->pre_page().$this->nowbar().$this->next_page(); 
  211.     break
  212.    case '5'
  213.     return $this->pre_bar().$this->pre_page().$this->nowbar().$this->next_page 
  214. ().$this->next_bar(); 
  215.     break
  216. /*----------------private function (私有方法)----------------------------------- 
  217. ------------------------*/ 
  218. /** 
  219. * 设置url头地址 
  220. * @param: String $url 
  221. * @return boolean 
  222. */ 
  223. function _set_url($url=""
  224. if(!emptyempty($url)){ 
  225.       /手动设置 
  226.    $this->url=$url.((stristr($url,'?'))?'&':'?').$this->page_name."="
  227. }else
  228.       /自动获取 
  229.    if(emptyempty($_SERVER['QUERY_STRING'])){ 
  230.        /不存在QUERY_STRING时 
  231.     $this->url=$_SERVER['REQUEST_URI']."?".$this->page_name."="
  232.    }else
  233.        / 
  234.     if(stristr($_SERVER['QUERY_STRING'],$this->page_name.'=')){ 
  235.         /地址存在页面参数 
  236.      $this->url=str_replace($this->page_name.'='.$this->nowindex,'',$_SERVER 
  237. ['REQUEST_URI']); 
  238.      $last=$this->url[strlen($this->url)-1]; 
  239.      if($last=='?'||$last=='&'){ 
  240.          $this->url.=$this->page_name."="
  241.      }else
  242.          $this->url.='&'.$this->page_name."="
  243.      } 
  244.     }else
  245.         / 
  246.      $this->url=$_SERVER['REQUEST_URI'].'&'.$this->page_name.'='
  247.     }/end if    
  248.    }/end if 
  249. }/end if 
  250. /** 
  251. * 设置当前页面 
  252. * 
  253. */ 
  254. function _set_nowindex($nowindex
  255. if(emptyempty($nowindex)){ 
  256.    /系统获取 
  257.    if(isset($_GET[$this->page_name])){ 
  258.     $this->nowindex=intval($_GET[$this->page_name]); 
  259.    } 
  260. }else
  261.       /手动设置 
  262.    $this->nowindex=intval($nowindex); 
  263. /** 
  264. * 为指定的页面返回地址值 
  265. * 
  266. * @param int $pageno 
  267. * @return string $url 
  268. */ 
  269. function _get_url($pageno=1) 
  270. return $this->url.$pageno
  271. /** 
  272. * 获取分页显示文字,比如说默认情况下_get_text('<a href="">1</a>')将返回[<a 
  273. href="">1</a>] 
  274. * 
  275. * @param String $str 
  276. * @return string $url 
  277. */ 
  278. function _get_text($str
  279. return $this->format_left.$str.$this->format_right; 
  280. /** 
  281.    * 获取链接地址 
  282. */ 
  283. function _get_link($url,$text,$style=''){ 
  284. $style=(emptyempty($style))?'':'class="'.$style.'"'
  285. if($this->is_ajax){ 
  286.       /如果是使用AJAX模式 
  287.    return '<a '.$style.' href="网页特效:'.$this
  288. >ajax_action_name.'(''.$url.'')">'.$text.'</a>'
  289. }else
  290.    return '<a '.$style.' href="'.$url.'">'.$text.'</a>'
  291. /** 
  292.    * 出错处理方式 
  293. */ 
  294. function error($function,$errormsg
  295.      die('Error in file <b>'.__FILE__.'</b> ,Function <b>'.$function.'()</b> 
  296. :'.$errormsg); 
  297. $page=new page(array('total'=>1000,'perpage'=>20)); 
  298. echo 'mode:1<br>'.$page->show(); 
  299. echo '<hr>mode:2<br>'.$page->show(2); 
  300. echo '<hr>mode:3<br>'.$page->show(3); 
  301. echo '<hr>mode:4<br>'.$page->show(4); 
  302. echo '<hr>开始AJAX模式:'
  303. $ajaxpage=new page(array 
  304. ('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test')); 
  305. echo 'mode:1<br>'.$ajaxpage->show(); 
  306. ?> 

最新文章

点击排行

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号@版权所有AG亚游集团

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

将载入史册 韩媒:新加坡是朝美首脑会谈真正赢家 财报超预期 谷歌加入万亿美元市值竞赛 俄统计局:至2036年俄罗斯人口可能将增至1.57亿人 印度:与中国关系进入敏感期 勿参加达赖所有活动 十三届全国人大一次会议主席团常务主席名单 环资委副主任委员谈雾霾:我们心情和人民群众一样 韩消费占GDP比例创新低 就业不稳老无可依不敢花钱 [新浪彩票]14日竞彩盘口剖析:卡尔马继续赢球 克里姆林宫:普京6月8日起访华 将乘坐中国高铁 韦世豪一脚乌龙将国安踢回解放前 间接帮助老东家 烧烤店收取顾客“炭位费”2万称是惯例 被罚3万 特朗普控枪政策引不满 美千所学校罢课掀控枪游行
特朗普在贸易对抗升级中寻求额外1000亿美元商品关税 原帅转会加盟广东?朱芳雨:会有国手级引援 澳大利亚贸易部长17日访华:希望能与中国官员会面 并购重组领域内幕交易高发 证监会继续高压监管 中国政府援助老挝紧急救灾物资运抵万象 上海女篮体验花艺沙龙 增添场外生活情趣 观点:热刺天王有雄心该去皇马 他不去莱万就去了 斯里兰卡为何再陷民族冲突困境?专家这样说 美官员表示将紧急立法 限制中方投资敏感技术领域 英王室迎来首位非裔王妃:不一样新娘的不一样婚礼 空军战机双向绕岛巡航 国台办:强烈警告“台独”
难道乙肝疫苗也造假?接种乙肝疫苗无抗体怎么说 心碎!绿城球员含泪致谢 球迷打横幅送鼓励|gif 阿卡普尔科赛伊斯内尔不敌哈里森 遗憾止步首轮 台军锐鸢无人机坠毁吓坏小学生 10年内已坠机5架 印乘客抱怨有蚊子被赶下飞机 航空公司:你移民吧 球员锦标赛次轮辛普森领先 伍兹晋级李昊桐出局 首站奖金10万!“鸟巢之路”本周六正式鸣锣开赛 老人被邻居叫醒帮抬病人后猝死 家属欲向对方索赔 住房租期内禁单方面涨租金 专家:新版合同直击痛点 怎么样白手起家 微信怎么挣钱 适合女性开的十五种店 一万元猪舍建设图片 AG亚游集团