中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 网页编程 -> PHP编程 -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ASP编程 · .NET编程
· PHP编程 · JSP编程
· CGI 专区
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· PHP应用分页显示制作...
· PHP应用分页显示制作...
· PHP应用分页显示制作...
· PHP应用分页显示制作...
· PHP应用分页显示制作...
· PHP应用程序加速探索...
PHP应用分页显示制作详细讲解(2)
作者:不详  来源:不详  发布时间:2006-8-14 10:10:48  发布人:chinazhan

 减小字体 增大字体

     4、OO风格代码
  
    以下代码中的数据库连接是使用的pear db类进行处理
  
  <?php
   // FileName: Pager.class.php
   // 分页类,这个类仅仅用于处理数据结构,不负责处理显示的工作
   Class Pager
   {
    var $PageSize; //每页的数量
    var $CurrentPageID; //当前的页数
    var $NextPageID; //下一页
    var $PreviousPageID; //上一页
    var $numPages; //总页数
    var $numItems; //总记录数
    var $isFirstPage; //是否第一页
    var $isLastPage; //是否最后一页
    var $sql; //sql查询语句
  
    function Pager($option)
    {
     global $db;
     $this->_setOptions($option);
     // 总条数
     if ( !isset($this->numItems) )
     {
      $res = $db->query($this->sql);
      $this->numItems = $res->numRows();
     }
     // 总页数
     if ( $this->numItems > 0 )
     {
      if ( $this->numItems < $this->PageSize ){ $this->numPages = 1; }
      if ( $this->numItems % $this->PageSize )
      {
       $this->numPages= (int)($this->numItems / $this->PageSize) + 1;
      }
      else
      {
       $this->numPages = $this->numItems / $this->PageSize;
      }
     }
     else
     {
      $this->numPages = 0;
     }
  
     switch ( $this->CurrentPageID )
     {
      case $this->numPages == 1:
       $this->isFirstPage = true;
       $this->isLastPage = true;
       break;
      case 1:
       $this->isFirstPage = true;
       $this->isLastPage = false;
       break;
      case $this->numPages:
       $this->isFirstPage = false;
       $this->isLastPage = true;
       break;
      default:
       $this->isFirstPage = false;
       $this->isLastPage = false;
     }
  
     if ( $this->numPages > 1 )
     {
      if ( !$this->isLastPage ) { $this->NextPageID = $this->CurrentPageID + 1; }
      if ( !$this->isFirstPage ) { $this->PreviousPageID = $this->CurrentPageID - 1; }
     }
  
     return true;
    }
  
    /***
    *
    * 返回结果集的数据库连接
    * 在结果集比较大的时候可以直接使用这个方法获得数据库连接,然后在类之外遍历,这样开销较小
    * 如果结果集不是很大,可以直接使用getPageData的方式获取二维数组格式的结果
    * getPageData方法也是调用本方法来获取结果的
    *
    ***/
  
    function getDataLink()
    {
     if ( $this->numItems )
     {
      global $db;
  
      $PageID = $this->CurrentPageID;
  
      $from = ($PageID - 1)*$this->PageSize;
      $count = $this->PageSize;
      $link = $db->limitQuery($this->sql, $from, $count); //使用Pear DB::limitQuery方法保证数据库兼容性
  
      return $link;
     }
     else
     {
      return false;
     }
    }
  
    /***
    *
    * 以二维数组的格式返回结果集
    *
    ***/
  
    function getPageData()
    {
     if ( $this->numItems )
     {
      if ( $res = $this->getDataLink() )
      {
       if ( $res->numRows() )
       {
        while ( $row = $res->fetchRow() )
        {
         $result[] = $row;
        }
       }
       else
       {
        $result = array();
       }
  
       return $result;
      }
      else
      {
       return false;
      }
     }
     else
     {
      return false;
     }
    }
  
    function _setOptions($option)
    {
     $allow_options = array(
       'PageSize',
       'CurrentPageID',
       'sql',
       'numItems'
     );
  
    foreach ( $option as $key => $value )
    {
     if ( in_array($key, $allow_options) && ($value != null) )
     {
      $this->$key = $value;
     }
    }
  
    return true;
   }
  }
  ?>
  <?php
  // FileName: test_pager.php
  // 这是一段简单的示例代码,前边省略了使用pear db类建立数据库连接的代码
  require "Pager.class.php";
  if ( isset($_GET['page']) )
  {
   $page = (int)$_GET['page'];
  }
  else
  {
   $page = 1;
  }
  $sql = "select * from table order by id";
  $pager_option = array(
   "sql" => $sql,
   "PageSize" => 10,
   "CurrentPageID" => $page
  );
  if ( isset($_GET['numItems']) )
  {
   $pager_option['numItems'] = (int)$_GET['numItems'];
  }
  $pager = @new Pager($pager_option);
  $data = $pager->getPageData();
  if ( $pager->isFirstPage )
  {
   $turnover = "首页|上一页|";
  }
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。

 
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .