A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2019-3-1 09:20  /  1005 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

* 分页查询的原理

* 分析分页的原理:

* 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$page = isset($_GET['p'])? $_GET['p']:1;
$page = ($page == 0 ) ? 1 : $page;
$num = 5;
$offset = ($page-1)*$num;
//1.获取到所有数据,用表格显示出来
$pdo = new PDO('mysql:host=localhost;dbname=php','root', 'root');
//$sql = "SELECT id,name,email FROM user1 LIMIT 0,3";
$sql = "SELECT `staff_id`,`name`,`sex`,`age`,`salary` FROM `staff` LIMIT :offset, :num";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':num', $num, PDO::PARAM_INT);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$res = $stmt->fetchAll();
echo '<h2 align="center">员工信息表</h2>';
echo '<table border="1" cellspacing="0" cellpadding="5" width="70%" align="center">';
echo '<tr bgcolor="lightgreen"><th>ID</th><th>用户名</th><th>性别</th><th>年龄</th><th>工资</th></tr>';
foreach ($res as $row) {
    echo '<tr align="center">';
    echo '<td>'.$row['staff_id'].'</td><td>'.$row['name'].'</td>';
    $row['sex'] = $row['sex']==0 ? '男' : '<span style="color:red">女</span>';
    echo '<td>'.$row['sex'].'</td>';
    echo '<td>'.$row['age'].'</td><td>'.$row['salary'].'</td>';
    echo '</tr>';
}
echo '</table>';
//计算共计多少页?
$stmt2 = $pdo->prepare("SELECT * FROM staff");
$stmt2->execute();
$totalPage = ceil($stmt2->rowCount() / $num);
$page = ($page == $totalPage) ? ($totalPage-1) : $page;
echo '<style>a {margin-left: 10px;text-decoration: none}a:hover{color:red}</style>';
echo '<h3 align="center">';
echo '<a href="http://php.io/0427/page.php?p=1">首页</a>';
echo '<a href="http://php.io/0427/page.php?p=';
echo (($page-1)==0)?1:($page-1);
echo '">上一页</a>';
for ($i=1; $i<=$totalPage; $i++) {
    echo '<a href="http://php.io/0427/page.php?p='.$i.'">'.$i.'</a>';
}
echo '<a href="http://php.io/0427/page.php?p='.($page+1).'">下一页</a>';
echo '<a href="http://php.io/0427/page.php?p='.$totalPage.'">尾页</a>';
echo '</h3>';


1 个回复

倒序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马