Correction status:Uncorrected
Teacher's comments:
分页显示的原理:
需要现获取数据表的行数,再套用公式 {(当前页数-1)*每页应该显示的行数}得出的偏移量,使用SELECT中的LIMIT关键字可以限制每次查询结果集中的记录数量 (LIMIT 偏移量, 显示数量: 偏移量(offset)就是记录的位置索引,从0开始, 与数组类似)
# 假设每页显示5条记录
# 第1页,offset从0开始
SELECT * FROM staff LIMIT 0, 5;
# 第2页,offset从5开始
SELECT * FROM staff LIMIT 5, 5;
# 第3页,offset从10开始
SELECT * FROM staff LIMIT 10, 5;
<?php // 从数据库获取员工数据 $page = isset($_GET['p'])? $_GET['p'] : 1; //页数变量,如果为空则为1 $pagenum = isset($_GET['pn']) ? $_GET['pn'] : 5;//每页显示记录的变量,默认为5 //echo $_SERVER['PHP_SELF']; $pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root'); //获取记录总行数 $stmt = $pdo->prepare('SELECT COUNT(*) FROM `staff`'); $stmt->execute(); $total = $stmt->fetchColumn(0); //获取页数 $pages = ceil($total/$pagenum); //ceil()向上取整函数 //计算偏移量 $offset = ($page - 1) * $pagenum; $stmt = $pdo->prepare("SELECT * FROM `staff` WHERE `is_show`=1 LIMIT {$offset},{$pagenum}"); $stmt->execute(); $staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
<p> <?php for ($index = 1;$index<=$pages;$index++):?> <a href="javascript:location.href='<?=$_SERVER['PHP_SELF']?>?p=<?=$index?>&pn=<?=$pagenum?>'" target="workspace"><?=$index?></a> <?php endfor;?> </p>