找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1352|回复: 0
打印 上一主题 下一主题

PHP实现的简单分页类及用法示例

[复制链接]

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
跳转到指定楼层
楼主
发表于 2018-2-14 05:36:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了PHP实现的简单分页类及用法。分享给大家供大家参考,具体如下:
page;
*
* 获得总页数
* $page->pageCount;
*
* 获得总记录数
* $page->rowCount;
*
* 获得本页记录数
* $page->listSize;
*
* 获得记录集
* $page->list;
* 记录集是一个2维数组,例:list[0]['id']访问第一条记录的id字段值.
*
* 获得页码列表
* $page->getPageList();
*/
class Page
{
  //基础数据
  var $sql;
  var $page;
  var $pageSize;
  var $pageStr;
  //统计数据
  var $pageCount; //页数
  var $rowCount; //记录数
  //结果数据
  var $list = array(); //结果行数组
  var $listSize ;
  //构造函数
  function Page($conn,$sql_in,$page_in,$pageSize_in,$pageStr_in)
  {
    $this->sql = $sql_in;
    $this->page = intval($page_in);
    $this->pageSize = $pageSize_in;
    $this->pageStr = $pageStr_in;
    //页码为空或小于1的处理
    if(!$this->page||$this->pagepage = 1;
    }
    //查询总记录数
    $rowCountSql = preg_replace("/([\w\W]*?select)([\w\W]*?)(from[\w\W]*?)/i","$1 count(0) $3",$this->sql);
    if(!$conn)
      $rs = mysql_query($rowCountSql) or die("bnc.page: error on getting rowCount.");
    else
      $rs = mysql_query($rowCountSql,$conn) or die("bnc.page: error on getting rowCount.");
    $rowCountRow = mysql_fetch_row($rs);
    $this->rowCount=$rowCountRow[0];
    //计算总页数
    if($this->rowCount%$this->pageSize==0)
      $this->pageCount = intval($this->rowCount/$this->pageSize);
    else
      $this->pageCount = intval($this->rowCount/$this->pageSize)+1;
    //SQL偏移量
    $offset = ($this->page-1)*$this->pageSize;
    if(!$conn)
      $rs = mysql_query($this->sql." limit $offset,".$this->pageSize) or die("bnc.page: error on listing.");
    else
      $rs = mysql_query($this->sql." limit $offset,".$this->pageSize,$conn) or die("bnc.page: error on listing.");
    while($row=mysql_fetch_array($rs))
    {
      $this->list[]=$row;
    }
    $this->listSize = count($this->list);
  }
  /*
   * getPageList方法生成一个较简单的页码列表
   * 如果需要定制页码列表,可以修改这里的代码,或者使用总页数/总记录数等信息进行计算生成.
   */
  function getPageList()
  {
    $firstPage;
    $previousPage;
    $pageList;
    $nextPage;
    $lastPage;
    $currentPage;
    //如果页码>1则显示首页连接
    if($this->page>1)
    {
      $firstPage = "[url=]pageStr."1\">首页[/url]";
    }
    //如果页码>1则显示上一页连接
    if($this->page>1)
    {
      $previousPage = "[url=]pageStr.($this->page-1)."\">上一页[/url]";
    }
    //如果没到尾页则显示下一页连接
    if($this->pagepageCount)
    {
      $nextPage = "[url=]pageStr.($this->page+1)."\">下一页[/url]";
    }
    //如果没到尾页则显示尾页连接
    if($this->pagepageCount)
    {
      $lastPage = "[url=]pageStr.$this->pageCount."\">尾页[/url]";
    }
    //所有页码列表
    for($counter=1;$counterpageCount;$counter++)
    {
      if($this->page == $counter)
      {
        $currentPage = "".$counter."";
      }
      else
      {
        $currentPage = " "."[url=]pageStr.$counter."\">".$counter."[/url]"." ";
      }
      $pageList .= $currentPage;
    }
    return $firstPage." ".$previousPage." ".$pageList." ".$nextPage." ".$lastPage." ";
  }
}
?>
用法示例:
list;
foreach($rows as $row)
{
  echo $row['UserName']."
";
}
echo $page->getPageList(); //输出分页列表
?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP+ajax技巧与应用小结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总
希望本文所述对大家PHP程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • 基于PHP实现数据分页显示功能
  • PHP实现数据分页显示的简单实例
  • PHP实现适用于文件内容操作的分页类
  • PHP分页初探 一个最简单的PHP分页代码的简单实现
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端