【PHP】分页条函数封装

时间:2023-03-08 22:18:18

这两天在学习PHP

想做一个前端后台都包含的网站

看了一些视频发现大牛们都是将封装起来实现代码的重用性

本人技拙也写了个分页条函数的封装

分页条在用PHP网站开发中十分常用

通过封装代码来提高网站开发效率

function pageBar($table,$pageSize,$showPage=5){    //第一个参数为表名 第二个参数为每页显示几个 需要与之前遍历数据处相同
$page = $_GET['p'];
$sql1 = "select COUNT(*) from ".$table;
$res1 = mysql_fetch_array(mysql_query($sql1));
$total = $res1[0];
$totalPage = ceil($total / $pageSize); //获取总页数
$pageOffset = ($showPage - 1) / 2; //页码偏移量
$pageBanner = "";
$pageSelf = $_SERVER['PHP_SELF'];
$start = 1; //开始页码
$end = $totalPage; //结束页码
if($page > 1){
$pageBanner .= "<a href='".$pageSelf."?p=1'>首页</a>";
$pageBanner .= "<a href='".$pageSelf."?p=".($page - 1)."'>上一页</a>";
}
if($totalPage > $showPage){ //当总页数大于显示页数时
if($page > $pageOffset + 1){ //当当前页大于页码偏移量+1时,也就是当页码为4时 开始页码1替换为...
$pageBanner .= "...";
}
if($page > $pageOffset){ //当当前页大于页码偏移量时 开始页码变为当前页-偏移页码
$start = $page - $pageOffset;
$end = $totalPage > $page + $pageOffset ? $page + $pageOffset : $totalPage;
//如果当前页数+偏移量大于总页数 那么$end为总页数
}else{
$start = 1;
$end = $totalPage > $showPage ? $showPage : $totalPage;
}
if($page + $pageOffset > $totalPage){
$start = $start - ($page + $pageOffset - $end);
}
}
for($i = $start ; $i <= $end ; $i++){ //循环出页码
if($i == $page){
$pageBanner .= "<span>".$i."</span>";
}else{
$pageBanner .= "<a href='".$pageSelf."?p=".$i."'>".$i."</a>";
} }
if($totalPage > $showPage && $totalPage > $page + $pageOffset){ //当总页数大于页码显示页数时 且总页数大于当前页+偏移量
$pageBanner .= "...";
}
if($page < $totalPage){
$pageBanner .= "<a href='".$pageSelf."?p=".($page + 1)."'>下一页</a>";
$pageBanner .= "<a href='".$pageSelf."?p=".$totalPage."'>尾页</a>";
}
echo $pageBanner;
}

上面是进行的代码封装 可以直接来调用

pageBar($table,$pageSize,$showPage=5);

三个参数解释如下

$table 表名

$pageSize 每页显示多少条 需要与之前遍历显示数据相同

$showPage 可选参数,可见页数,默认为5,注意里面需要填奇数!

【PHP】分页条函数封装

当$showPage=5时 这里可见页数只有5页

完整代码如下图

 <?php
$link = mysql_connect('localhost','root','123456');
mysql_select_db('test',$link);
mysql_query("set names UTF8");
$page = $_GET['p'];
$pageSize = 2;
$sql = "select * from page limit ".($page-1)*$pageSize.",$pageSize";
$res = mysql_query($sql);
echo "<table width=40% border=1 cellspacing=0>";
echo "<tr><td>用户名</td><td>密码</td></tr>";
while($row = mysql_fetch_array($res)){
echo "<tr><td>".$row['username']."</td><td>".$row['password']."</td></tr>";
}
echo "</table>"; function pageBar($table,$pageSize,$showPage=5){ //第一个参数为表名 第二个参数为每页显示几个 需要与之前遍历数据处相同
$page = $_GET['p'];
$sql1 = "select COUNT(*) from ".$table;
$res1 = mysql_fetch_array(mysql_query($sql1));
$total = $res1[0];
$totalPage = ceil($total / $pageSize); //获取总页数
$pageOffset = ($showPage - 1) / 2; //页码偏移量
$pageBanner = "";
$pageSelf = $_SERVER['PHP_SELF'];
$start = 1; //开始页码
$end = $totalPage; //结束页码
if($page > 1){
$pageBanner .= "<a href='".$pageSelf."?p=1'>首页</a>";
$pageBanner .= "<a href='".$pageSelf."?p=".($page - 1)."'>上一页</a>";
}
if($totalPage > $showPage){ //当总页数大于显示页数时
if($page > $pageOffset + 1){ //当当前页大于页码偏移量+1时,也就是当页码为4时 开始页码1替换为...
$pageBanner .= "...";
}
if($page > $pageOffset){ //当当前页大于页码偏移量时 开始页码变为当前页-偏移页码
$start = $page - $pageOffset;
$end = $totalPage > $page + $pageOffset ? $page + $pageOffset : $totalPage;
//如果当前页数+偏移量大于总页数 那么$end为总页数
}else{
$start = 1;
$end = $totalPage > $showPage ? $showPage : $totalPage;
}
if($page + $pageOffset > $totalPage){
$start = $start - ($page + $pageOffset - $end);
}
}
for($i = $start ; $i <= $end ; $i++){ //循环出页码
if($i == $page){
$pageBanner .= "<span>".$i."</span>";
}else{
$pageBanner .= "<a href='".$pageSelf."?p=".$i."'>".$i."</a>";
} }
if($totalPage > $showPage && $totalPage > $page + $pageOffset){ //当总页数大于页码显示页数时 且总页数大于当前页+偏移量
$pageBanner .= "...";
}
if($page < $totalPage){
$pageBanner .= "<a href='".$pageSelf."?p=".($page + 1)."'>下一页</a>";
$pageBanner .= "<a href='".$pageSelf."?p=".$totalPage."'>尾页</a>";
}
echo $pageBanner;
} ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>11</title>
<style type="text/css">
*{margin: 0;padding: 0;}
.div1{width: 400px;padding: 5px;border: 1px solid red;text-align: center;}
.div1 a{margin-left: 5px;color: #000;text-decoration: none;color: red;}
.div1 span{margin-left: 5px;text-decoration: underline;}
</style>
</head>
<body>
<div class="div1">
<?php pageBar("page",2); ?>
</div>
</body>
</html>

这里注意第7行的$pageSize需要与下面函数调用传入参数相同

里面只包含a元素和span标签

span代表当前页的页码

所以直接可以在html代码里面套个div再去直接修改里面的样式