盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

PHP应用分页显示制作详细讲解

时间:2024/12/4作者:未知来源:盾怪网教程人气:

[摘要]<a href=?page='.$page_count.'>尾页</a>';  }  // 获取数据,以二维数组格式返回结果  if( $amount ){   $sql =...
<a href=?page='.$page_count.'>尾页</a>';
  }
  // 获取数据,以二维数组格式返回结果
  if( $amount ){
   $sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
   $result = mysql_query($sql);

   while ( $row = mysql_fetch_row($result) ){
    $rowset[] = $row;
   }
  }else{
   $rowset = array();
  }
  // 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果
?>
[page_break]

  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 = "首页

关键词:PHP应用分页显示制作详细讲解




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版