批改状态:合格
老师批语:
MYSQLI分页函数效果图 PHP HTML混写


MYSQLI分页函数分页封装函数:func_page.php
<?php
if(!function_exists('func_page.php'))
{
function func_page($db,$table,$page=1,$num=15){
$offset = ($page-1)*$num; //计算偏移量
$sql = "SELECT * FROM {$table} LIMIT {$offset}, {$num};";//查询取出数据
$res = mysqli_query($db,$sql);
$rows = mysqli_fetch_all($res,MYSQLI_ASSOC);
//获取总页数分2步:1.获取总记录数,2.再除以每次的显示数量,结果向上取整
$number = mysqli_query($db,"SELECT COUNT(*) FROM {$table}");
list($total) = mysqli_fetch_row($number); //总记录数保存到变量$total中
$pages = ceil($total / $num); //获取到总页数 $pages
//总页数 = 总记录数 ÷ 每页显示数量 ceil向上取整
//返回当前分页数据与总页数
return ['rows'=>$rows, 'pages'=>$pages];
}
}点击 "运行实例" 按钮查看在线实例
MYSQLI分页函数源代码 PHP HTML混写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>会员信息表</title>
<style type="text/css">
table,th,td {
border: 1px solid #000;
padding: 8px;
}
table th {
background-color: #21a675;
color: #fff;
}
table {
width: 80%;
border-collapse: collapse;
margin: 0 auto;
text-align: center;
}
h2 {
color: red;
}
h4 {
width: 80%;
text-align: center;
margin: 5px auto;
}
h4 a {
text-decoration: none;
color: #666;
padding:0 5px;
display: inline-block;
}
h4 a:hover, .active {
color: blue;
}
#pa {
color: red;
}
form {
display: inline;
}
</style>
</head>
<body>
<?php
//导入分页函数库
require 'func_page.php';
//连接数据库
$db = mysqli_connect('127.0.0.1','root','uyYYFGZxuVactZc7','wd2018');
//手工修改url中的get参数可以实现翻页查询
$page = isset($_GET['p']) ? $_GET['p']:1;
$num = 15; //每页显示数据数量
$table = 'users'; //导入数据库的表名
//调用分页函数
$data = func_page($db,$table,$page,$num);
$rows = $data['rows'];//当前分页数据
$pages = $data['pages'];//总页数
//如果当前变成为了0,则强制修改为1,否则就是当前页数
$page = ($page == 0) ? 1 : $page;
//如果大于总页数,则强制修改为总页数,否则就是当前页数
$page = ($page > $pages) ? $pages : $page;
//分页太多省略多余页码判断
$page_max=25;//每页显示多少页码
$buffCount=12;//缓存页
$startPage=1;//起始页
if ($page< $buffCount){
$startPage=1;
}else if($page>=$buffCount and $page<$pages-$page_max ){
$startPage=$page-$buffCount+1;
}else{
$startPage=$pages-$page_max+1;
}
$endPage=$startPage+$page_max-1;
?>
<table>
<caption><h2>会员信息表</h2></caption>
<tr>
<th>ID</th>
<th>帐号</th>
<th>密码</th>
<th>姓名</th>
<th>余额</th>
<th>邮箱</th>
<th>手机号码</th>
<th>上线代理</th>
</tr>
<?php foreach ($rows as $row): ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['user']; ?></td>
<!-- 隐藏密码中间三位数字 -->
<td><?php echo substr_replace(($row['pass']),'医院医院', 1, 4); ?></td>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['money']; ?></td>
<td><?php echo $row['email']; ?></td>
<td><?php echo $row['phone']; ?></td>
<td><?php echo $row['upline']; ?></td>
</tr>
<?php endforeach;?>
</table>
<h4>
<!-- 当前是第一页时,隐藏首页和上一页 -->
<?php if($page != 1): ?>
<a id="pa" href="?p=1">首页</a>
<a id="pa" href="?p=<?php echo $page-1; ?>"><</a>
<?php endif; ?>
<!-- 生成中间页码 -->
<?php for($i=$startPage;$i<=$endPage; $i++): ?>
<a class="<?php if($_GET['p']==$i){echo 'active';}?>" href="?p=<?php echo $i ?>"><?php echo $i ?></a>
<?php endfor ?>
<!-- 当前是最后一页时,隐藏末页和下一页 -->
<?php if($page != $pages): ?>
<a id="pa" href="?p=<?php echo $page+1; ?>">></a>
<a id="pa" href="?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>goto</button>
</form>
</h4>
</body>
</html>点击 "运行实例" 按钮查看在线实例
这次编写在分页很多的情况下 隐藏多余页码是个难点 找了很久百度才再到解决方法
//分页太多省略多余页码判断
$page_max=25;//每页显示多少页码
$buffCount=12;//缓存页
$startPage=1;//起始页
if ($page< $buffCount){
$startPage=1;
}else if($page>=$buffCount and $page<$pages-$page_max ){
$startPage=$page-$buffCount+1;
}else{
$startPage=$pages-$page_max+1;
}
$endPage=$startPage+$page_max-1;
?>中间页码用
for($i=$startPage;$i<=$endPage; $i++)
做判断
<!-- 生成中间页码 -->
<?php for($i=$startPage;$i<=$endPage; $i++): ?>
<a class="<?php if($_GET['p']==$i){echo 'active';}?>" href="?p=<?php echo $i ?>"><?php echo $i ?></a>
<?php endfor ?>另外还有一种纯PHP的写法 跳转页用输入框方式编写
MYSQLI分页函数效果图 纯PHP写法










MYSQLI分页函数源代码 纯PHP写法
CSS加上
#btn {
margin:0 5px;
}
form {
display: inline;
}
#page {
width: 40px;
padding:0 5px;
}<?php
echo '<h4>';
//上一页
$htmlstr="";//输出内容函数变量
if($page==1){//当前页面=1时,
$htmlstr.='';//隐藏\上一页\
}else{
$lastPage=$page-1; //当前页面-1时,显示\上一页\
$htmlstr.="<a href='?p=$lastPage'>上一页</a>";
}
// 首页
if($page-$page_max>1){//当前页面-最大页数>1时 如:12-10=2>1
$htmlstr.="<a href='?p=1'>首页</a>";//显示\首页\
$htmlstr.="<span>...</span>";//显示\省略号\
}
//当前页的左边
for($i=$page_max;$i>=1;$i--){
if(($page - $i) < 1 ) { // 当前页左边最多 page_max 个数字
continue;
}
$lastPage=$page-$i;
$htmlstr.="<a href='?p=$lastPage'>$lastPage</a>";
}
//当前页
$htmlstr.="<span style=\"color:red\">$page</span>";
//当前页右边
for($i=1;$i<=$page_max;$i++){
if(($page + $i) > $pages) { // 当前页右边最多 page_max 个数字
break;
}
$lastPage=$page+$i;
$htmlstr.="<a href='?p=$lastPage'>$lastPage</a>";
}
//尾页
if(($page+$page_max)<$pages){//当前页面+最大页数<总页数时
$htmlstr.="<span>...</span>";//显示\省略号\
$htmlstr .= '<a href="?p='.$pages.'">尾页</a>';//显示\尾页\
}
//下一页
if($page == $pages) {//当前页面=总页数时
$htmlstr .= '';//隐藏\下一页\
} else {
$nextPage=$page+1;//下一页=当前页面+1
$htmlstr .= "<a href='?p={$nextPage}'>下一页</a>";
}
//页面跳转
$htmlstr.="<form action = ''>";
$htmlstr.=" 跳到-第 <input type='number' min='1' max='$pages' value=".($page+1)." name='p' id='page'> 页";
$htmlstr.="<input type='submit' name='Submit' id='btn' value='确定'>";
$htmlstr.="</form>";
$htmlstr.="共 <font color='blue'>{$pages}</font> 页</div>";
$htmlstr.="-现在<font color='red'>{$page}</font>页</div>";
$checkText = $_POST['content'];
echo $htmlstr;
echo '</h4>';
?>点击 "运行实例" 按钮查看在线实例
重点
跳到-第 <input type='number' min='1' max='$pages' value=".($page+1)." name='p' id='page'> 页
input type='number' 输入框 只能输入数值 min 最小值 max 最大值 value 默认值
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号