批改状态:未批改
老师批语:
封装函数库 func_page.php
<?php
/**
* 分页函数封装
*/
if(!function_exists('func_page'))
{
function func_page($db,$table,$page=1,$sum=5) {
$offset = ($page-1) * $sum; //4.$page当前页数-1
$sql = "SELECT * FROM $table LIMIT {$offset}, {$sum};"; //1.先查询数据库所有数据,LIMIT 参数1:索引位置开始,参数2:每页显示数量
$res = mysqli_query($db,$sql); //2.使用Mysqli获取结果集
$rows = mysqli_fetch_all($res,MYSQLI_ASSOC); //3.将数组进行解析
// echo '<pre>'.print_r($rows,true).'</pre>';
//
// 上一页与下一页
// 获取总页数分2步:1.获取总记录数,2.再除以每次的显示数量,结果向上取整
$number = mysqli_query($db,"SELECT count(*) FROM {$table}");
//list() 函数用于在一次操作中给一组变量赋值。
list($total) = mysqli_fetch_row($number); //获取总记录数,并赋值给变量$total
$pages = ceil($total / $sum);
//返回当前分页数据与总页数
return ['rows'=>$rows, 'pages'=>$pages];
}
}
运行实例 »
点击 "运行实例" 按钮查看在线实例<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>分页查询</title>
<style>
table,th,td { border:1px solid; font-size: 13px; text-align: center; }
table{ width:1000px; margin: auto; border-collapse: collapse; }
th,td{padding: 5px 5px;}
th{
background-color: lightblue;
}
div {
width: 1000px; margin: auto; text-align: center; margin-top: 20px;
}
div a{
text-decoration: none;padding: 5px 10px; border:1px solid #999; display: inline-block;
}
div a:hover,.active{
background-color: red; color: #fff;
}
form {
display: inline;
}
</style>
</head>
<body>
<?php
// 导入分布函数库
require 'lib/func_page.php';
//连接数据库获取到全部的记录
$db = mysqli_connect('127.0.0.1','root','root','php');
$page = isset($_GET['p']) ? $_GET['p'] : 1; //获取当前页数,isset()进行判断,有就把$_GET['p']值拿到,如果没有就默认返回第1页
$sum = 3; //设置显示数量
$table = 'mana';
//调用分页函数
$data = func_page($db,$table,$page,$sum);
$rows = $data['rows']; //当前分页数据
$pages = $data['pages']; //总页数
/********要添加以下代码**********/
//如果当前变成为了0,则强制修改为1,否则就是当前页数
$page = ($page == 0) ? 1 : $page;
//如果大于总页数,则强制修改为总页数,否则就是当前页数
$page = ($page > $pages) ? $pages : $page; //获取总页数,总记录数除以每页显示的数量后,得到总页数 $pages
?>
<table>
<caption><h2>用户管理</h2></caption>
<tr>
<th>排序</th>
<th>用户名</th>
<th>用户等级</th>
<th>QQ号码</th>
<th>存款余额</th>
<th>注册时间</th>
<th colspan="3">操作</th>
</tr>
<?php foreach ($rows as $row): ?>
<tr>
<td><?php echo $row['mana_id']; ?></td>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['class']; ?></td>
<td><?php echo $row['faqqq']; ?></td>
<td><?php echo $row['sum']; ?></td>
<td><?php echo $row['join_date']; ?></td>
<td><?php echo $row['operation']; ?></td>
</tr>
<?php endforeach; ?>
</table>
<div>
<?php if($page!=1): //判断当前页数不等于1时,首页和上一页自动隐藏,反之显示?>
<a href="http://www.php.com/0427_page/page.php?p=1">首页</a>
<a href="http://www.php.com/0427_page/page.php?p=<?php echo $page-1; ?>">上一页</a>
<?php endif; ?>
<!-- 中间页码 -->
<!-- php代码输出class类实现高亮显示 -->
<?php for ($i=1; $i<=$pages; $i++): ?>
<a href="http://www.php.com/0427_page/page.php?p=<?php echo $i ?>" class="<?php if($_GET['p']==$i){echo 'active';}?>"><?php echo $i ?></a>
<?php endfor; ?>
<?php if($page != $pages): //判断当前页数不等于总页数时,下一页和尾页自动隐藏,反之显示?>
<a href="http://www.php.com/0427_page/page.php?p=<?php echo $page+1; ?>">下一页</a>
<a href="http://www.php.com/0427_page/page.php?p=<?php echo $pages; ?>">尾页</a>
<?php endif; ?>
<!-- 用表单实现下拉框直接跳转到目标页面 -->
<form action="" method="get">
第
<select name="p" id="">
<?php for ($i=1; $i<=$pages ; $i++): ?>
<!-- 循环输出全部页码,并锁定当前页-->
<option value="<?php echo $i; ?>" <?php if($_GET['p']==$i){echo 'selected';}; ?>><?php echo $i; ?></option>
<?php endfor; ?>
</select>
页
<button>跳转</button>
</form>
</div>
</body>
</html>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号