php分页原理 分页代码 分页类制作教程

分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解。

一、分页原理:

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

每页多少条记录($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从数据库内获取数据并显示了。

二、分页代码说明:五个步骤

代码中有充分解释,可复制到自己记事本中直接使用

<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>雇员信息列表</title> </head> <?php //显示所有emp表的信息 //1.连接数据库 $conn=mysql_connect('localhost','root','1234abcd') or die('连接数据库错误'.mysql_error()); //2.选择数据库 mysql_select_db('empManage'); //3.选择字符集 mysql_query('set names utf8'); //4.发送sql语句并得到结果进行处理 //4.1分页[分页要发出两个sql语句,一个是获得$rowCount,一个是通过sql的limit获得分页结果。所以我们会获得两个结果集,在命名的时候要记得区分。 分页 (四个值 两个sql语句)。] $pageSize=3;//每页显示多少条记录 $rowCount=0;//共有多少条记录 $pageNow=1;//希望显示第几页 $pageCount=0;//一共有多少页 [分页共有这个四个指标,缺一不可。由于$rowCount可以从服务器获得的,所以可以给予初始值为0; $pageNow希望显示第几页,这里最好是设置为0;$pageSize是每页显示多少条记录,这里根据网站需求提前制定。 .$pageCount=ceil($rowCount/$pageSize),既然$rowCount可以初始值为0,那么$pageCount当然也就可以设置为0.四个指标,两个0 ,一个1,另一个为网站需求。] //4.15根据分页链接来修改$pageNow的值 if(!empty($_GET['pageNow'])){ $pageNow=$_GET['pageNow']; }[根据分页链接来修改$pageNow的值。] $sql='select count(id) from emp'; $res1=mysql_query($sql); //4.11取出行数 if($row=mysql_fetch_row($res1)){ $rowCount=$row[0]; }//[取得$rowCount,,进了我们就知道了$pageCount这两个指标了。] //4.12计算共有多少页 $pageCount=ceil($rowCount/$pageSize); $pageStart=($pageNow-1)*$pageSize; //4.13发送带有分页的sql结果 $sql="select * from emp limit $pageStart,$pageSize";//[根据$sql语句的limit 后面的两个值(起始值,每页条数),来实现分页。以及求得这两个值。] $res2=mysql_query($sql,$conn) or die('无法获取结果集'.mysql_error()); echo '<table border=1>';[ echo "<table border='1px' cellspacing='0px' bordercolor='red' width='600px'>";] "<tr><th>id</th><th>name</th><th>grade</th><th>email</th><th>salary</th><th><a href='#'>删除用户</a></th><th><a href='#'>修改用户</a></th></tr>"; while($row=mysql_fetch_assoc($res2)){ echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>{$row['grade']}</td><td>{$row['email']}</td><td>{$row['salary']}</td><td><a href='#'>删除用户</a></td><td><a href='#'>修改用户</a></td></tr>"; } echo '</table>'; //4.14打印出页码的超链接 for($i=1;$i<=$pageCount;$i++){ echo "<a href='?pageNow=$i'>$i</a> ";//[打印出页码的超链接] } //5.释放资源,关闭连接 mysql_free_result($res2); mysql_close($conn); ?> </html>

三、简单分页类分享

现在公布一个简单分类制作。只要理解了这个类的原理和步骤,其他复杂类也就能够触类旁通了。不废话,直接上源码,可以直接用在你的项目中。

数据库操作类代码:mysqli.func.php

<?php // 数据库连接常量 define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PWD', ''); define('DB_NAME', 'guest'); // 连接数据库 function conn() { $conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME); mysqli_query($conn, "set names utf8"); return $conn; } //获得结果集 function doresult($sql){ $result=mysqli_query(conn(), $sql); return $result; } //结果集转为对象集合 function dolists($result){ return mysqli_fetch_array($result, MYSQL_ASSOC); } function totalnums($sql) { $result=mysqli_query(conn(), $sql); return $result->num_rows; } // 关闭数据库 function closedb() { if (! mysqli_close()) { exit('关闭异常'); } } ?>

分页实现代码:

<?php include 'mysqli.func.php'; // 总记录数 $sql = "SELECT dg_id FROM tb_user "; $totalnums = totalnums($sql); // 每页显示条数 $fnum = 8; // 翻页数 $pagenum = ceil($totalnums / $fnum); //页数常量 @$tmp = $_GET['page']; //防止恶意翻页 if ($tmp > $pagenum) echo "<script>window.location.href='index.php'</script>"; //计算分页起始值 if ($tmp == "") { $num = 0; } else { $num = ($tmp - 1) * $fnum; } // 查询语句 $sql = "SELECT dg_id,dg_username FROM tb_user ORDER BY dg_id DESC LIMIT " . $num . ",$fnum"; $result = doresult($sql); // 遍历输出 while (! ! $rows = dolists($result)) { echo $rows['dg_id'] . " " . $rows['dg_username'] . "<br>"; } // 翻页链接 for ($i = 0; $i < $pagenum; $i ++) { echo "<a href=index.php?page=" . ($i + 1) . ">" . ($i + 1) . "</a>"; } ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本

时间: 2024-10-24 22:19:26

php分页原理 分页代码 分页类制作教程的相关文章

经典php分页代码与分页原理(1/3)

经典php教程分页代码与分页原理 1.前言 分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一.对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解.本文适合初学者阅读,所有示例代码均使用php编写. 2.原理 所谓分页显示,也就是将数据库教程中的结果集人为的分成一段一段的来显示,这里需要两个初始的

php分页代码与分页原理

/* 分页简单得很,下面我们主要是讲一下关于分页原理与实现方法. */ /* 这样才能知道分几页. 比如说一个列表结果是126行,如果一页20行的话那么分7页,对吧. 我们的代码经理是这样的: 计算总行数:select count(*) from tablename where -.. 查询列表select * from tablename where - limit- 我们看这种方式再没有任何优化的方式下这样第个列表都是再次查询. 首先我们假设数据更新频率不是很高的情况下,我们点第1页,第2页

thinkPHP 分页写成自己分页类程序代码

我们行来看我自己做的一个实例  代码如下 复制代码 CREATE TABLE IF NOT EXISTS `think_form` (   `id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,   `title` varchar(255) NOT NULL,   `content` varchar(255) NOT NULL,   `create_time` int(11) unsigned NOT NULL,   PRIMARY KEY (`id

jquery实现html页面 div 假分页有原理有代码_jquery

div假分页原理:填充后div的总高度 (1000px) 显示高度(100px) 则页面总数为10页 .当查看第二页时,显示的div高度为100 - 200之间,以此类推 看见页面在翻页 实则为div滚动条移动. <div id="applications">显示数据集合</div> <style> #applications { /* width:500px;调整显示区的宽*/ height: 1592px; /*调整显示区的高*/ font-si

PHP分页技术的代码和示例

    分页是目前在显示大量结果时所采用的最好的方式.有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据.在互联网上,分​页是一般用于搜索结果或是浏览全部信息(比如:一个论坛主题).几乎在每一个Web应用程序都需要划分返回的数据,并按页显示.下面的这个列表给出的代码可以让你的开发很有帮助.学习这些代码,对于初学者也很有帮助. 1) 使用Ajax分页 下面这个示例使用了jQuery + PHP. Demo link   2) MySql 分页 数据库的分页处理. 3) Facebook

10个PHP分页技术的代码和示例

  分页是目前在显示大量结果时所采用的最好的方式.有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据.在互联网上,分​页是一般用于搜索结果或是浏览全部信息(比如:一个论坛主题).几乎在每一个Web应用程序都需要划分返回的数据,并按页显示.下面的这个列表给出的代码可以让你的开发很有帮助.学习这些代码,对于初学者也很有帮助. 1) 使用Ajax分页 下面这个示例使用了jQuery + PHP. Demo link     2) MySql 分页 数据库的分页处理.     3) Face

新闻列表的分页查询java代码实现_java

本文实例为大家分享了新闻列表分页查询的java代码,供大家参考,具体内容如下 package com.ibeifeng.test; //创建新闻测试类 public class newTest { private long id; private String title; private String content; private String author; public newTest() { super(); } public newTest(long id, String titl

Java Web 简单的分页显示实例代码_java

本文通过两个方法:(1)计算总的页数. (2)查询指定页数据,实现简单的分页效果. 思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指定页的数据,在表示层通过 EL 表达式和 JSTL 将该页数据显示出来. 先给大家展示下效果图: 题外话:该分页显示是用 "表示层-控制层-DAO层-数据库"的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步.废话不多说了,开始进入主题,详细步骤如下所示: 1.DAO层-数据库 JDBCUtils 类用于打开和关闭数据

php 分页原理详解_php技巧

在看本文之前,请确保你已掌握了PHP的一些知识以及MYSQL的查询操作基础哦. 作为一个Web程序,经常要和不计其数的数据打交道,比如会员的数据,文章数据,假如只有几十个会员那很好办,在一页显示就可以了,可是假如你的网站是几千甚至几十万会员的话,如果都在一页打开的话无论对浏览器还是观看者都是一种折磨,而且如果数据上亿,从数据库里查询一次的话,对服务器的压力是很大的,这不是正确的方法. 相信每个学习PHP的新手都会对分页这个东西感觉很头疼,不过有了默默的这一水帖,你肯定会拍拍脑袋说,嘿,原来分页竟