开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1148|回复: 0
收起左侧

[PHP相关教程] PHP分页函数 仿Google分页

[复制链接]
结帖率:52% (14/27)
发表于 2013-2-17 05:31:24 | 显示全部楼层 |阅读模式   湖北省荆州市
  1. /**
  2. * 分页函数
  3. * @param int $total    总页数
  4. * @param int $pagesize 每页几条
  5. * @param string $pkey  url中页面变量名称
  6. * @param string $url   基础url,其中的{page}会被替换为页码
  7. * 依赖函数 request_uri httpInt
  8. */
  9. function page($total,$pagesize=10,$pkey='p',$url=null){
  10.     $a_num=10;
  11.     $first=' 首页 ';
  12.     $last=' 尾页 ';
  13.     $pre=' 上页 ';
  14.     $next=' 下页 ';
  15.     $a_num=$a_num%2==0?$a_num+1:$a_num;
  16.     if(!$url){
  17.         $url=preg_replace("/&?{$pkey}=[^&]{0,}/", '',request_uri());
  18.         $url=strpos($url, '?')===FALSE?$url.'?'.$pkey.'={page}':$url.'&'.$pkey.'={page}';
  19.     }
  20.     $pages=ceil($total/$pagesize);
  21.     $curpage=httpInt($pkey,false,1);
  22.     $curpage=$curpage>$pages||$curpage<=0?1:$curpage;#当前页超范围置为1
  23.     $body='';$prefix='';$subfix='';
  24.     $start=$curpage-($a_num-1)/2;#开始页
  25.     $end=$curpage+($a_num-1)/2;  #结束页
  26.     $start=$start<=0?1:$start;   #开始页超范围修正
  27.     $end=$end>$pages?$pages:$end;#结束页超范围修正
  28.     if($pages>=$a_num){#总页数大于显示页数
  29.         if($curpage<=($a_num-1)/2){$end=$a_num;}//当前页在左半边补右边
  30.         if($end-$curpage<=($a_num-1)/2){$start-=5-($end-$curpage);}//当前页在右半边补左边
  31.     }
  32.     for($i=$start;$i<=$end;$i++){
  33.          if($i==$curpage){
  34.              $body.='<b>'.$i.'</b>';
  35.          }else{
  36.              $body.='<a href="'.str_replace('{page}',$i,$url).'"> '.$i.' </a>';
  37.          }
  38.     }
  39.     $prefix=($curpage==1?'':'<a href="'.str_replace('{page}',1,$url).'">'.$first.'</a><a href="'.str_replace('{page}',$curpage-1,$url).'">'.$pre.'</a>');
  40.     $subfix=($curpage==$pages?'':'<a href="'.str_replace('{page}',$curpage+1,$url).'">'.$next.'</a><a href="'.str_replace('{page}',$pages,$url).'">'.$last.'</a>');
  41.     $info=" 第{$curpage}/{$pages}页 ";
  42.     $go='<script>function ekup(){if(event.keyCode==13){clkyup();}}function clkyup(){if(!/\d+/.test(document.getElementById(\'gsd09fhas9d\').value)){alert(\'请输入页码!\');return;};location=\''.$url.'\'.replace(/\\{page\\}/,document.getElementById(\'gsd09fhas9d\').value);}</script><input onkeyup="ekup()" type="text" id="gsd09fhas9d" style="width:40px;vertical-align:text-baseline;padding:0 2px;font-size:10px;border:1px solid gray;"/> <span id="gsd09fhas9daa" onclick="clkyup();" style="cursor:pointer;text-decoration:underline;">转到</span>';
  43.     return $prefix.$body.$subfix.$info.$go;
  44. }
  45. /**
  46. * 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案
  47. */
  48. function request_uri()
  49. {
  50.     if (isset($_SERVER['REQUEST_URI']))
  51.     {
  52.         $uri = $_SERVER['REQUEST_URI'];
  53.     }
  54.     else
  55.     {
  56.         if (isset($_SERVER['argv']))
  57.         {
  58.             $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
  59.         }
  60.         else
  61.         {
  62.             $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
  63.         }
  64.     }
  65.     return $uri;
  66. }
  67. /**
  68.   * 获取HTTP传递的整数
  69.   * @param string $key 参数名称
  70.   * @param bool $ispost 采取POST传递方式,默认为真http://blog.ddian.cn
  71.   * @return 整数,非法时默认为 $default
  72.   */
  73. function httpInt($key, $ispost=true,$default=0) {
  74.      if ($ispost) {
  75.          if (isset($_POST[$key])) {
  76.              if (empty($_POST[$key])) {
  77.                  return $default;
  78.              } else {
  79.                  $val = trim($_POST[$key]);
  80.                  if (preg_match("/^\-?\d+$/", $val)) return intval($val);
  81.                  else return $default;
  82.              }
  83.          } else {
  84.              return $default;
  85.          }
  86.      } else {
  87.          if (isset($_GET[$key])) {
  88.              if (empty($_GET[$key])) {
  89.                  return $default;
  90.              } else {
  91.                  $val = trim($_GET[$key]);
  92.                  if (preg_match("/^\-?\d+$/", $val)) {
  93.                      return intval($val);
  94.                  } else {
  95.                      return $default;
  96.                  }
  97.              }
  98.          } else {
  99.              return $default;
  100.          }
  101.      }
  102. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表