最新PHP的分页原理和简单实例

以下是三零网为大家整理的最新PHP的分页原理和简单实例的文章,希望大家能够喜欢!

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>'; 

// 获取数据,以二维数组格式返回结果 
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就可以很简单的用得到的二维数组来显示结果 
?>

转载来自:http://www.q3060.com/list3/list117/17310.html

转载于:https://blog.51cto.com/11156643/1738299

PHP的分页原理和简单实例相关推荐

  1. Linux C Socket编程原理及简单实例

    部分转自:http://goodcandle.cnblogs.com/archive/2005/12/10/294652.aspx 1.   什么是TCP/IP.UDP? 2.   Socket在哪里 ...

  2. oracle分页怎么查询,简单实例解释Oracle分页查询

    什么是分页查询 分页查询就是把query到的结果集按页显示.比如一个结果集有1W行,每页按100条数据库.而你获取了第2页的结果集. 为什么要分页查询 如果一个结果集有几十W行,那么在一个页面上显示肯 ...

  3. pytorch生成对抗网络GAN的基础教学简单实例(附代码数据集)

    1.简介 这篇文章主要是介绍了使用pytorch框架构建生成对抗网络GAN来生成虚假图像的原理与简单实例代码.数据集使用的是开源人脸图像数据集img_align_celeba,共1.34G.生成器与判 ...

  4. php分页技术的作用,分页原理技术细节剖析(php+mysql)实例

    提到分页,大家都不陌生,在我们日常浏览网页时常遇到,尤其新闻文章列表等都有分页,如下图所示: 分页实例 下面,通过一个实例为大家剖析一下分页原理上技术细节. 一.功能开发思路 在分页功能的实现前,先做 ...

  5. python装饰器实例-Python装饰器原理与简单用法实例分析

    本文实例讲述了Python装饰器原理与简单用法.分享给大家供大家参考,具体如下: 今天整理装饰器,内嵌的装饰器.让装饰器带参数等多种形式,非常复杂,让人头疼不已.但是突然间发现了装饰器的奥秘,原来如此 ...

  6. 机器学习之线性回归原理详解、公式推导(手推)、简单实例

    目录 1. 原理详解 1.1. 线性回归 1.2. 回归系数 2. 公式推导 2.1. 单元线性回归 2.2. 多元线性回归 3. 简单实例 3.1. 实例1:一元线性回归 实例2: 多元线性回归 3 ...

  7. Sql分页查询以及top函数简单实例

    Sql分页查询以及top函数简单实例 Sql分页查询以及top函数简单实例 我们做项目时查询表格存在几百上千条数据时经常会需要用到分页,下面就给大家介绍一下在sql中查询分页的简单实例吧.首先我们要知 ...

  8. php分页代码简单实现原理,php分页类之PHP分页原理+代码实现

    首先了解SQL语句中的limit用法 SELECT * FROM table -- limit 开始位置 , 操作条数 (其中开始位置是从0开始的) 例子: 取前20条记录:SELECT * FROM ...

  9. 强化学习(八) - 深度Q学习(Deep Q-learning, DQL,DQN)原理及相关实例

    深度Q学习原理及相关实例 8. 深度Q学习 8.1 经验回放 8.2 目标网络 8.3 相关算法 8.4 训练算法 8.5 深度Q学习实例 8.5.1 主程序 程序注释 8.5.2 DQN模型构建程序 ...

最新文章

  1. 「hadoop」hadoop启动需要相关的命令(仅供本人使用)
  2. 微信小程序 app.json 详细介绍
  3. iPhone 11的秘密武器:超宽频U1芯片,不止AirDrop,480Mbps高速传输,更有大用途
  4. linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
  5. 上网登录窗不弹出_配置 Windows XP 正常上网(TLS HTTPS),连接到 NAS
  6. linux收回用户执行权限,Linux之文件权限管理命令
  7. 诺微联盟催生智能手机的三足鼎立
  8. json字符串使用注意问题
  9. 初中英语听力软件测试,初中英语听力训练
  10. 【NLP之情感分析】华为云NLP算法专家:全面解读文本情感分析任务
  11. inDesign教程,如何创建具有吸引力的边注栏?
  12. 【JS】中文繁简转换
  13. python的小tips
  14. 良好的代码习惯(一)
  15. 大学三方协议约定的服务器,大学生签订三方协议要注意
  16. linux系统安装geany文本编辑器
  17. 历届蓝桥杯Scratch编程省赛 初级 中级 青少年编程比赛省赛真题解析【持续更新 已更新至35题】
  18. RocketMQ 的安装和可视化界面
  19. USACO 奶牛食品(最大流)
  20. Android 8.0 华为手机 桌面应用图标显示圆形适配方案

热门文章

  1. 35岁学嵌入式合适吗_保姆级攻略来了!嵌入式冰箱该怎么选?看这篇就够了
  2. php元类,什么是元类-python编程入门系列图文教程-PHP中文网教程
  3. 武林c语言,c语言printf函数的使用
  4. 菜单栏底部线条切换效果
  5. 深度剖析浏览器渲染性能原理,你到底知道多少?
  6. 使用svrx来mock数据
  7. 《学习JavaScript数据结构与算法》第三章 数组
  8. 读《学习JavaScript数据结构与算法》 第二章
  9. java 用ajax更新表单,ajax刷新表格,该如何处理
  10. java8 interface_Java8新特性:函数式接口@FunctionalInterface使用说明