博客列表 >制作数据表的分页

制作数据表的分页

Pengsir
Pengsir原创
2018年01月06日 23:15:39574浏览

PHP代码

<?php
/*分页查询原理
 * 分页的原理:
 * 1.LIMIT参数的作用:偏移量与显示数量
 * 2.如果控制每页显示的数量
 * 3.接收GET参数,用p表示当前页数,每页显示3条
 * 4.需要的参数:
 * (1).totalPage 总页数
 * (2).totalNumber 一共有多少条数据
 * (3).pageSize 每页显示多少条数据
 * (4)currentPage 当前第几页
 * (5)*.rangeStart 起始页
 * (6)*.rangeEnd 末页
 * 5.当前偏移量的计算公式:(页数-1)*每页显示的数量
 * offset = (page-1)*num
 */
//1.用PDO预处理来获取表中的全部数据
header('Content-Type:text/html; charset=UTF-8');

$page = isset($_GET['p'])? $_GET['p']:1;
$page = ($page == 0 ) ? 1 : $page;
//$unm表示每页显示的记录数
$num = 3;
$offset = ($page-1)*$num;

$pdo = new PDO('mysql:dbname=demo','root', 'root');
//LIMIT :offset,num  limit限制的意思  第一个参数:offset是偏移量,第二个参数是一个常量,显示多少条数据 为是PDO预处理的写法
$sql = "SELECT `id`,`name`,`email` FROM `user1` LIMIT :offset, :num";
$pdoStmt = $pdo->prepare($sql);
//绑定第一个占位符offset
$pdoStmt->bindParam('offset', $offset, PDO::PARAM_INT);
//绑定第二个占位符num
$pdoStmt->bindParam('num', $num, PDO::PARAM_INT);
//注:$pdoStmt调用execute()方法,这个方法里面不传参数
$res = $pdoStmt->execute();
echo '<h3 align="center">用户信息表</h3>';
echo '<table border="1" cellspacing="0" cellpadding="5" width="70%" align="center">';
echo '<tr bgcolor="#90ee90"><th>ID</th><th>用户名</th><th>邮箱</th></tr>';
foreach ($pdoStmt as $row) {
    echo '<tr align="center">';
    echo '<td>'.$row['id'].'</td><td>'.$row['name'].'</td><td>'.$row['email'].'</td>';
    echo '</tr>';
}
echo '</table>';

//计算共计多少页
$pdoStmt2 = $pdo->prepare("SELECT * FROM user1");
$pdoStmt2->execute();
//$totalPage总页数  ceil向上取整    $pdoStmt2->rowCount()总页数   $num每页数
$totalPage = ceil($pdoStmt2->rowCount() / $num);

//编写下一页到总页数,你再点下一页会越界,必须设置
//($totalPage-1)这里减1是:如果是最大页你点了下一页多了一页必须减回来,否则设置当前页
$page = ($page == $totalPage) ? ($totalPage-1) : $page;

//创建分页条
echo '<h3 align="center">';
echo '<a href="http://www.php.io/30/page.php?p=1">首页</a>';
echo '<a href="http://www.php.io/30/page.php?p=';
echo (($page-1)==0)?1:($page-1);
echo '">上一页</a>';
for ($i=1; $i<=$totalPage; $i++) {
    echo '<a href="http://www.php.io/30/page.php?p='.$i.'">'.$i.'</a>';
}
echo '<a href="http://www.php.io/30/page.php?p='.($page+1).'">下一页</a>';
echo '<a href="http://www.php.io/30/page.php?p='.$totalPage.'">尾页</a>';
echo '</h3>';

效果图

制作数据表的分页.png

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议