这两天在学习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,注意里面需要填奇数!

当$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再去直接修改里面的样式

【PHP】分页条函数封装的更多相关文章

  1. 前端总结·基础篇·JS(三)arguments、callee、call、apply、bind及函数封装和构造函数

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...

  2. Django分页类的封装

    Django分页类的封装 Django ORM  封装 之前有提到(Django分页的实现)会多次用到分页,将分页功能封装起来能极大提高效率. 其实不是很难,就是将之前实现的代码全都放到类中,将需要用 ...

  3. android中RecycleView分页原生代码封装,无任何第三方代

    概述 RecycleView分页加载封装,简单方便,功能齐全 详细 代码下载:http://www.demodashi.com/demo/13283.html 一.场景: 在项目开发中经常使用到列表集 ...

  4. js cookie创建读取删除函数封装

    js cookie创建读取删除函数封装 一.总结 都是为了方便操作,这样弄了很方便 1.创建cookie的函数封装的作用:方便设置过期时间expire,方便设置键和值 2.查询cookie的数据封装的 ...

  5. 测开之路一百三十三:实现sql函数封装

    连接数据库的频率很高,所以把数据库操作封装起来 函数封装: def make_dicts(cursor, row): """ 将游标获取的Tuple根据数据库列表转换为d ...

  6. ExtJS自制表格Grid分页条

    试过Grid自带的load和分页功能,没有成功,干脆就自己写了...... 主要是查询条件比较复杂...... 希望哪位大神能有更好的意见. Ext.define('MyApp.ux.Paginati ...

  7. mysql数据库管理工具sqlyog在首选项里可以设置默认查询分页条数和字体,改写关键字大小写

    sqlyog设置一直习惯用sqlyog来管理mysql数据库,但有三个地方用得不是很爽:1.默认查询条数只有1000条经常需要勾选掉重新查询.2.自动替换关键字大小写,有时候字段名为关键字的搞成大写的 ...

  8. extjs表格下的分页条——Ext.grid.Panel 的 pagingtoolbar

    两种分页条:每页固定条数的分页条 和 自定义选择每页内容条数的分页条 一.每页固定条数的分页条 这种样式的-- dockedItems: [{ xtype: 'pagingtoolbar', stor ...

  9. c#读写共享内存操作函数封装

    原文 c#读写共享内存操作函数封装 c#共享内存操作相对c++共享内存操作来说原理是一样,但是c#会显得有点复杂. 现把昨天封装的读写共享内存封装的函数记录下来,一方面希望给需要这块的有点帮助,另一方 ...

随机推荐

  1. CentOS 7 Rescure

    之前从来没想过会在Linux系统中使用这个东西-- 今天系统无法启动了!!! 一.开机进度条卡住了.查看一下字符卡在哪里了? Starting MySQL Community Server... 就是 ...

  2. PHP中的逻辑运算符的优先级

    在三元运算中(expr1)?(expr2):(expr3); and,or,xor的优先级要小于三元运算符,所以需要添加括号例:如果$a为true,$b为fals,$a and $b?"tr ...

  3. 使用VC++ ATL实现iStylePDF的COM插件

    本文介绍了一种使用VC++ ATL(Active Template Library),利用ISPExtensibility接口,为 iStylePDF 加入功能简单的COM插件(addin),加入工具 ...

  4. SPSS数据分析—广义线性混合模型

    广义线性混合模型是目前线性模型范畴内最为完备的模型框架,它是广义线性模型的进一步延伸,进一步突破适用条件,因变量既 可以非正态,也可以非独立,由于其最为复杂,因此SPSS对其输出结果采用模型格式,而不 ...

  5. 浏览器地址栏背后的logic

    曾经有面试题是这样的:"描述在浏览器的地址栏中输入:http://www.baidu.com 后发生了什么?". 1.服务端返回baidu页面资源,浏览器载入html 2.浏览器开 ...

  6. Android开发环境搭建(jdk+eclip+android sdk)

    在开启Android 开发之旅之前,首先要把准备工作做好---搭建开发环境 一.环境搭建: 1.Java JDK 安装 2.Eclipse 安装 3.Android SDK 安装 4.ADT安装 5. ...

  7. FlexBox标准及兼容写法速查表

    FlexBox标准写法: 支持浏览器: IE11,  Chrome29+, FireFox 20+, Safari加前缀 -webkit- 概述: 总的来说就是12个属性; 关于容器的6个,5个单一属 ...

  8. 简单的例子 关于Java内存管理的讲解

    我想做的是,逐行读取文件,然后用该行的电影名去获取电影信息.因为源文件较大,readlines()不能完全读取所有电影名,所以我们逐行读取. 就这段代码,我想要在位置二处使用base64,然后结果呢? ...

  9. python【4】-函数

    一. 定义函数 定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回.如果没有return语句,函数执行完毕后也会返 ...

  10. b/s 猫大叔

       好复杂,要把客户端文件传到服务端,再从服务端传到FTP......肿么设计的这是....       至少你都要把客户端的文件读到服务端的内存中,因为B/S控制器在S端,不在B端 非要用B/S实 ...