您的位置:学习中国 推荐教程 PHP编程 正文
原作者:kuku 添加时间:2007-06-02 原文发表:2007-06-02 人气:1 来源:互联网

本文章共4949字,分4页,当前第1页,快速翻页:
 

1、前言

   分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解。本文适合初学者阅读,所有示例代码均使用php编写。


  2、原理

   所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

    每页多少条记录($PageSize)?
    当前是第几页($CurrentPageID)?

   现在只要再给我一个结果集,我就可以显示某段特定的结果出来。

   至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。

   以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

   前10条记录:select * from table limit 0,10
   第11至20条记录:select * from table limit 10,10
   第21至30条记录:select * from table limit 20,10
   ……

   这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

   拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。

  3、简单代码

   请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。

<?php
  // 建立数据库连接
  $link = mysql_connect("localhost", "mysql_user", "mysql_password")
    or die("Could not connect: " . mysql_error());
  // 获取当前页数
  if( isset($_GET['page']) ){
   $page = intval( $_GET['page'] );
  }
  else{
   $page = 1;
  }
  // 每页数量
  $PageSize = 10;
  // 获取总数据量
  $sql = "select count(*) as amount from table";
  $result = mysql_query($sql);
  $row = mysql_fetch_row($result);
  $amount = $row['amount'];
  // 记算总共有多少页
  if( $amount ){
   if( $amount < $page_size ){ $page_count = 1; } //如果总数据量小于$PageSize,那么只有一页
   if( $amount % $page_size ){ //取总数据量除以每页数的余数
    $page_count = (int)($amount / $page_size) + 1; //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
   }else{
    $page_count = $amount / $page_size; //如果没有余数,则页数等于总数据量除以每页数的结果
   }
  }
  else{
   $page_count = 0;
  }

  // 翻页链接
  $page_string = '';
  if( $page == 1 ){
   $page_string .= '第一页|上一页|';
  }
  else{
   $page_string .= '<a href=?page=1>第一页</a>|<a href=?page='.($page-1).'>上一页</a>|';
  }
  if( ($page == $page_count) || ($page_count == 0) ){
   $page_string .= '下一页|尾页';
  }
  else{
   $page_string .= '<a href=?page='.($page+1).'>下一页</a>|<a href=?page='.$page_count.'>尾页</a>';
 

本文章更多内容1 - 2 - 3 - 4 - 下一页>>
本页地址
相关文章

MySQL数据库基础教程
Php利用java解析xml
使用PHP实现动态网页
使用PHP和XSL stylesheets转换XML文档
自己写的mysql类
在php中输出html代码
关于session的问题集锦解决方案
用PHP写的MD5加密函数
Win XP下全新安装Apache2,PHP5,MYSQL5
用PHP写FTP文件上传
PHP安装攻略:安装并配置PHP
PHP中通过Web执行C/C++应用程序
PHP中实现面向对象编程
SSI使用详解(二)
SSI使用详解(一)
PHP和MySQL开发的8个技巧
虚拟主机中对PHP的特殊设置
提升PHP速度全攻略
多php服务器实现多session并发运行
PHP中对数据库操作的封装

相关评论


本文章所属分类:首页 推荐教程 PHP编程   PHP编程