+ -
当前位置:首页 → 问答吧 → 分享一下自己的分页类

分享一下自己的分页类

时间:2007-07-03

来源:互联网

复制PHP内容到剪贴板
PHP代码:

<?php
/**
 * 文件名: page.class.php
 * 说明:  分页类
 * 作者:  吕耀祖
 * 联系方式:email:[email protected]
 *    msn:[email protected]
 * 创建日期:2007-06-25
 */
class page {
 var $perpage= 10;  //每页显示多少条记录数
 var $total;    //总记录数
 var $curpage = 1;  //当前页码
 var $pages;    //总页数 
 var $offset;   //记录偏移量
 var $filename;   //分页文件名称
 var $pagename = 'page'; //分页时用来传递参数的变量 如:"$filename?page=$curpage"
 
 function page($total,$perpage,$filename,$pagename) {
  $this->total = intval($total);
  if(isset($perpage)) $this->perpage = $perpage;
  $this->pages = ceil($this->total / $this->perpage);
  $this->getcurpage();
  $this->offset = ($this->curpage-1)*$this->perpage;
  if(isset($pagename)) $this->pagename = $pagename;
  if(isset($filename)) {
   $this->filename = $filename;
  } else {
   $this->filename = $_SERVER['PHP_SELF'];
  } 
 }
 function getcurpage() {
  if(isset($_GET[$this->pagename])) $this->curpage = intval($_GET[$this->pagename]);
  if($this->curpage < 1) $this->curpage = 1;
  if($this->curpage > $this->pages) $this->curpage = $this->pages;
 }
 
 function getfirstpage() {
  if($this->curpage == 1) {
   return "首页";
  } else {
   return "<a href=\"{$this->getlink(1)}\">首页</a>";
  }
 }
 function getnextpage() {
  $nextpage = $this->curpage + 1;
  return "<a href=\"{$this->getlink($nextpage)}\">下一页</a>";
 }
 function getprepage() {
  $prepage = $this->curpage - 1;
  return "<a href=\"{$this->getlink($prepage)}\">上一页</a>";
 }
  
 function getlastpage() {
  if($this->curpage == $this->pages) {
   return "尾页";
  } else {
   return "<a href=\"{$this->getlink($this->pages)}\">尾页</a>";
  }
 }
 
 function getlink($param) {
  if(strpos($this->filename,'?')) {
   return $this->filename."&".$this->pagename."=".$param;
  } else {
   return $this->filename."?".$this->pagename."=".$param;
  } 
 }
 
 function showpage() {
  $begin = $this->curpage - 4;
        $end = $this->curpage + 5;
        if($this->curpage<=4){
                $begin = 1;
                $end = 10;
        }
        if($this->curpage > $this->pages-10){
                $begin = $this->pages - 10;
                $end = $this->pages;
        }
        if($begin<1){
                $begin = 1;
        }
        if($end>$this->pages){
                $end = $this->pages;
        }
        if($this->total>$this->perpage) {
         $pagenav = $this->getfirstpage();
   if($this->curpage > 1) {
    $pagenav .=  $this->getprepage();
   }
   for($i = $begin; $i <= $end; $i++) { 
    if($i == $this->curpage) {
     $pagenav .=  "$i"." ";
    } else {
     $pagenav .= "<a href=\"{$this->getlink($i)}\">[$i]</a>"." "; 
    }
   }  
   if($this->curpage < $this->pages) {
    $pagenav .= $this->getnextpage();
    $pagenav .= $this->getlastpage();
   }  
        }
        return $pagenav;
 }
}
?>

使用方法:
复制PHP内容到剪贴板
PHP代码:
$total = 1000;
$perpage = 10;
$page = new page($total,$perpage);
$sql = "select * from xxx limit $page->offset,$perpage";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
 echo $row['xxx']."<br/>";
}
echo $page->showpage();

[ 本帖最后由 网鬼 于 2007-7-3 12:14 编辑 ]

作者: 网鬼   发布时间: 2007-07-03

不错.不知道你的这个分页的方式如何,我一直在用另一个分页类.加上自己修改后.还行.下次发上去请高手指导一二.

作者: yanglish   发布时间: 2007-07-03

我这里只是一个最基本的显示样式,你可以自己扩充一下!
多谢支持啊!

作者: 网鬼   发布时间: 2007-07-03

顶了再看

作者: wukeyuan   发布时间: 2007-07-03

老吕啊
给你提两个意见
第一个
你的参数不全会报错
第二
如果你的地址上有其他参数会出问题
请修改

作者: feelone   发布时间: 2007-07-13

呵呵,多谢黄大哥的指导!:P

作者: 网鬼   发布时间: 2007-07-14

顶一下,支持

作者: fnet   发布时间: 2007-08-14

osc 的不错

作者: caiyuerui   发布时间: 2007-08-15

我比较推崇用会话去分页,不用考虑那么多也不会被别人传递恶意字符

作者: sulwan   发布时间: 2008-07-06

学习学习一下喔,

作者: forweike   发布时间: 2008-07-07