前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP-分页

PHP-分页

作者头像
cwl_java
发布2020-03-28 19:33:12
3.2K1
发布2020-03-28 19:33:12
举报
文章被收录于专栏:cwl_Java

1.6 分页

1.6.1 分析
代码语言:javascript
复制
-- 1、获取当前页码的数据
页码		SQL语句
1			select * from products limit 0,10
2			select * from products limit 10,10
3			select * from products limit 20,10
结论:
$pageno:页码
$startno:起始位置
$pagesize=10:页面大小
公式:$startno=($pageno-1)*$pagesize;

-- 2、如何获取页码
用户点击页面底端页码,传递当前的页面

-- 3、如何获取总页码		
记录数			页数			计算
60				6			60/10=6
51				6			ceil(51/10)=6

结论:
$rowcount:总记录数
$pagecount:总页数
公式:$pagecount=ceil($rowcount/$pagesize)

-- 4、如何获取总记录数
select count(*) from products;
在这里插入图片描述
在这里插入图片描述
1.6.2 步骤

第一步:获取总记录数

第二步:求出总页数

第三步:循环显示页码

第四步:通过当前页面,求出起始位置

第五步:获取当前页面数据,并遍历显示

1.6.3 代码实现

将上一讲的MySQLDB类拷贝到站点下,将测试代码删除,只留下类代码,文件名改为MySQLDB.class.php

分页页面代码如下:

代码语言:javascript
复制
<?php
//自动加载类
spl_autoload_register(function($class_name){
	require "./{$class_name}.class.php";
});
//获取单例
$param=array(
	'user'		=>	'root',
	'pwd'		=>	'root',
	'dbname'	=>	'data'
);
//获取单例
$db=MySQLDB::getInstance($param);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style type="text/css">
	table{
		width:780px;
		border:solid #000 1px;
	}
	td,th{
		border:solid #000 1px;
	}
</style>
</head>

<body>
<?php
$pagesize=10;		//页面大小
//第一步:获取总记录数
$rowcount=$db->fetchColumn('select count(*) from products');
//第二步:求出总页数
$pagecount=ceil($rowcount/$pagesize);
//第四步:通过当前页面,求出起始位置
//$pageno=isset($_GET['pageno'])?$_GET['pageno']:1;
$pageno=$_GET['pageno']??1;
$pageno=$pageno<1?1:$pageno;
$pageno=$pageno>$pagecount?$pagecount:$pageno;
$startno=($pageno-1)*$pagesize;
//第五步:获取当前页面数据,并遍历显示
$sql="select * from products limit $startno,$pagesize";
$rs=$db->fetchAll($sql);
?>
<table>
	<tr>
		<th>编号</th>
		<th>商品名称</th>
		<th>规格</th>
		<th>价格</th>
	</tr>
	<?php foreach($rs as $row):?>
	<tr>
		<td><?=$row['proID']?></td>
		<td><?=$row['proname']?></td>
		<td><?=$row['proguige']?></td>
		<td><?=$row['proprice']?></td>
	</tr>
	<?php endforeach;?>
</table>
<!--第三步:循环显示页码-->
一共有<?=$rowcount?>条记录,每页放<?=$pagesize?>条记录,当前是<?=$pageno?>页 <br />
【<a href="?pageno=1">首页</a>】
【<a href="?pageno=<?=$pageno-1?>">上一页</a>】
<?php for($i=1; $i<=$pagecount; $i++):?>
	<a href="?pageno=<?=$i?>"><?=$i?></a>
<?php endfor;?>
【<a href="?pageno=<?=$pageno+1?>">下一页</a>】
【<a href="?pageno=<?=$pagecount?>">末页</a>】
</body>
</html>

运行结果

在这里插入图片描述
在这里插入图片描述
1.6.4 分页优化

在上面的分页代码中,虽然SQL语句比较经典,但是每次都要获取不需要的数据,浪费资源

代码语言:javascript
复制
$sql="select * from products limit $startno,$pagesize";

优化

代码语言:javascript
复制
$sql="select * from products where proid>=(select proid from products limit $startno,1) limit $pagesize";
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.6 分页
    • 1.6.1 分析
      • 1.6.2 步骤
        • 1.6.3 代码实现
          • 1.6.4 分页优化
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档