PHP自动适应范围的页码分页程序_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP自动适应范围的页码分页程序

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:程序范围适应自动
黑客防线网安网讯:  WebjxCom提示:可以自动适应范围的页码分页程序.    效果图:    记得以前看到过一个页码方式的分页效果,页码数多了折行继续显示一直到60多页,呵呵!有点影响美观!    于...
  WebjxCom提示:可以自动适应范围的页码分页程序.
  
  效果图:
  
  记得以前看到过一个页码方式的分页效果页码数多了折行继续显示一直到60多页呵呵!有点影响美观!
  
  于是写了一个,可以自动适应范围的页码分页程序
  
  也就是说,页码格式如下
  
  <<<1234567>>>
  
  <<<6789101112>>>
  
  下划线为当前页,这样就可以固定显示一个相近的页码,避免太长影响美观
  
  代码加了注释,主要是新手看看,呵呵,写这个函数,没有考虑表现结构分离问题,高手就不要追究了!
  
  <?php
  
  functionpage($page,$total,$phpfile,$pagesize=10,$pagelen=7){
  
  $pagecode='';//定义变量,存放分页生成的HTML
  
  $page=intval($page);//避免非数字页码
  
  $total=intval($total);//保证总记录数值类型正确
  
  if(!$total)returnarray();//总记录数为零返回空数组
  
  $pages=ceil($total/$pagesize);//计算总分页
  
  //处理页码合法性
  
  if($page<1)$page=1;
  
  if($page>$pages)$page=$pages;
  
  //计算查询偏移量
  
  $offset=$pagesize*($page-1);
  
  //页码范围计算
  
  $init=1;//起始页码数
  
  $max=$pages;//结束页码数
  
  $pagelen=($pagelen%2)?$pagelen:$pagelen+1;//页码个数
  
  $pageoffset=($pagelen-1)/2;//页码个数左右偏移量
  
  //生成html
  
  $pagecode='<divclass="page">';
  
  $pagecode.="<span>$page/$pages</span>";//第几页,共几页
  
  //如果是第一页,则不显示第一页和上一页的连接
  
  if($page!=1){
  
  $pagecode.="<ahref="{$phpfile}?page=1">&lt;&lt;</a>";//第一页
  
  $pagecode.="<ahref="{$phpfile}?page=".($page-1)."">&lt;</a>";//上一页
  
  }
  
  //分页数大于页码个数时可以偏移
  
  if($pages>$pagelen){
  
  //如果当前页小于等于左偏移
  
  if($page<=$pageoffset){
  
  $init=1;
  
  $max=$pagelen;
  
  }else{//如果当前页大于左偏移
  
  //如果当前页码右偏移超出最大分页数
  
  if($page+$pageoffset>=$pages+1){
  
  $init=$pages-$pagelen+1;
  
  }else{
  
  //左右偏移都存在时的计算
  
  $init=$page-$pageoffset;
  
  $max=$page+$pageoffset;
  
  }
  
  }
  
  }
  
  //生成html
  
  for($i=$init;$i<=$max;$i++){
  
  if($i==$page){
  
  $pagecode.='<span>'.$i.'</span>';
  
  }else{
  
  $pagecode.="<ahref="{$phpfile}?page={$i}">$i</a>";
  
  }
  
  }
  
  if($page!=$pages){
  
  $pagecode.="<ahref="{$phpfile}?page=".($page+1)."">&gt;</a>";//下一页
  
  $pagecode.="<ahref="{$phpfile}?page={$pages}">&gt;&gt;</a>";//最后一页
  
  }
  
  $pagecode.='</div>';
  
  returnarray('pagecode'=>$pagecode,'sqllimit'=>'limit'.$offset.','.$pagesize);
  
  }
  
  ?>
  
  函数参数:
  
  $page当前$_GET获得的页码
  
  $total总记录数
  
  $phpfile页码连接文件名
  
  $pagesize不用解释了吧呵呵
  
  $pagelen最多显示几个页码注意(奇数),对称嘛!
  
  函数返回一个数组:
  
  pagecode索引对应的内容是生成的HTML代码
  
  sqllimit索引对应的是sqllimit后缀
  
  使用方法:
  
  <?php
  
  $phpfile='index.php';
  
  $page=isset($_GET['page'])?$_GET['page']:1;
  
  $db=newMysql();
  
  $counts=$db->counts('select`id`from`test`');
  
  $sql='select`id`,`title`from`test`';
  
  $getpageinfo=page($page,$counts,$phpfile);
  
  $sql.=$getpageinfo['sqllimit'];
  
  $data=$db->getRows($sql);
  
  ?>
  
  <?php
  
  echo$getpageinfo['pagecode'];//显示分页的html代码
  
  ?>
  
  css
  
  <styletype="text/css">
  
  body{font-family:Tahoma;}
  
  .page{padding:2px;font-weight:bolder;font-size:12px;}
  
  .pagea{border:1pxsolid#ccc;padding:05px05px;margin:2px;text-decoration:none;color:#333;}
  
  .pagespan{padding:05px05px;margin:2px;background:#09f;color:#fff;border:1pxsolid#09c;}
  
  </style>
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17401-1.html
网站维护教程更新时间:2012-09-21 05:18:14  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer