phpcms 2008自定义分页函数 php代码完善版

来源:互联网 发布:兰州历史气象数据查询 编辑:程序博客网 时间:2024/05/31 19:04

$pagesize=40;// 每一页的信息数。

  $where='where userid='.$_userid;//调用数据库的条件。
  $order = 'order by addtime desc';//排序方式
  $total = cache_count("SELECT count(*) AS `count` FROM `phpcms_task_zc` $where");  //统计总数据量
  
  $pagenum=ceil($total/$pagesize); //计算分页总数
  if($pagenum<$page)$page=$pagenum;
  if($page<1)$page=1;
  $next=$page+1;
  $priv=$page-1;
  if($priv<1)  
   $priv=1;
  if($next>$pagenum)
   $next=$pagenum;
        $offset = $pagesize*($page-1);
    $limit = " LIMIT $offset, $pagesize";
  $data = array();
  $result = $db->query("select id,title,addtime,price,status from `phpcms_task_zc` $where $order $limit");
  while($r = $db->fetch_array($result))
  {
   $data[]=$r;
  }
  $db->free_result($result);
  
  $pages='';
  $url='member/rec.php?a=zc&page=';
  $pages.='<a href="'.$url.'=1">首页</a>&nbsp;<a href="'.$url.$priv.'">上一页</a>';
  if($pagenum==1)$pages.='&nbsp;[1]';
  elseif($pagenum<=6)
  {
   for($x=1;$x<=$pagenum;$x++)
      {
       if($x!=$page)   
         $pages.='&nbsp;[<a href="'.$url.$x.'">'.$x.'</a>]';
       else
         $pages.='&nbsp;[<b>'.$x.'</b>]';
      }
  }
  else
  {
     if($page>7)$pages.='&nbsp;[<a href="'.$url.'1">1</a>]...';
   elseif($page>6)$pages.='&nbsp;[<a href="'.$url.'1">1</a>]';
      for($i=5;$i>0;$i--)
      {
       $x=$page-$i;
       if($x<1)continue; 
        $pages.='&nbsp;[<a href="'.$url.$x.'">'.$x.'</a>]';
      }
      $pages.='&nbsp;[<b>'.$page.'</b>]';
      for($i=1;$i<=5;$i++)
      {
       $x=$page+$i;
       if($x>$pagenum)break; 
       $pages.='&nbsp;[<a href="'.$url.$x.'">'.$x.'</a>]';
      }
      if($page<$pagenum-6)$pages.='&nbsp;...[<a href="'.$url.$pagenum.'">'.$pagenum.'</a>]';
      elseif($page<$pagenum-5)$pages.='&nbsp;[<a href="'.$url.$pagenum.'">'.$pagenum.'</a>]';
   }
  $pages.='&nbsp;<a href="'.$url.$next.'">下一页</a>&nbsp;<a href="'.$url.$pagenum.'">尾页</a>';

结果,如下 假设当前页面是10;总页面 30页,前面五页,后面五页,

首页 上一页 1 ...  56789 [10]11 12 13 14 15 ... 30 下一页 尾页