分页是WEB项目所必需的基本功能,也是作为码农的基本技能点,所以不多说了上代码吧~(@^_^@)~
class PageTool{
private $pageSize = 10; //每页显示条数
private $total; //查询的总条数
private $totalPages; //总页数
private $page; //当前页码
private $up; //上一页
private $next; //下一页
private $pageBanner; //导航条
function __construct($total,$pageSize=false,$page=1){
//获取总条数
$this->total = $total;
if($pageSize){
$this->pageSize = $pageSize;
}
//得到分页总页数
$totalPages = ceil($this->total/$this->pageSize);
//当前访问的页数
$page=isset($_GET['p'])?$_GET['p']:$page;
//当获取的值小于1或者大于总页数予以纠正
$this->page= $page<1?1:($page>$totalPages?$totalPages:$page);
$this->totalPages = $totalPages;
$this->up = $page-1;
$this->next = $page+1;
$this->pageBanner = '';
}
//分页导航栏处理
public function pageMain(){
$page = $this->page;
$pageBanner = $this->pageBanner;
$totalPages = $this->totalPages;
$up = $this->up;
$next = $this->next;
/**************首页处理**************************/
if($page==1){
//当前页为第一页,首页和上一页不可用
$pageBanner .= "<span>首页</span> <span>上一页<span> ";
$pageBanner .= "<span>1</span> ";
}else{
$pageBanner .= "<a href='?p=1'>首页</a> <a href='?p=$up'>上一页</a> ";
$pageBanner .= "<a href='?p=1'>1</a> ";
}
/*****************当页数小于一定值时全显示*********************/
if($totalPages<=7){
for($i=2;$i<$totalPages;$i++){
if($i==$page){
//当前显示页无连接标记
$pageBanner .= "<span>$i</span> ";
}else{
$pageBanner .= "<a href='?p=$i'>$i</a> ";
}
}
}
/******************************************************/
/*********当页数大于一定值,不需要全部显示时处理**********/
if($totalPages>7){
/**********前2到4页处理****************************/
if($page<4){
for($i=2;$i<=4;$i++){
if($i==$page){
$pageBanner .= "<span>$i</span> ";
}else{
$pageBanner .= "<a href='?p=$i'>$i</a> ";
}
}
$pageBanner .= "<span>...<span> ";
}
/**********中间页处理******************************/
if($page>=4&&$page<$totalPages-2){
$pageBanner .= "<span>...<span> ";
for($i=$page-1;$i<=$page+1;$i++){
if($i==$page){
$pageBanner .= "<span>$i</span> ";
}else{
$pageBanner .= "<a href='?p=$i'>$i</a> ";
}
}
$pageBanner .= "<span>...<span> ";
}
/**********后四页处理********************************/
if($page>=$totalPages-2){
$pageBanner .= "<span>...<span> ";
for($i=$totalPages-3;$i<$totalPages;$i++){
if($i==$page){
$pageBanner .= "<span>$i</span> ";
}else{
$pageBanner .= "<a href='?p=$i'>$i</a> ";
}
}
}
}
/************************************************************/
/**********尾页处理*******************************************/
if($page==$totalPages){
$pageBanner .= "<span>$totalPages</span> ";
$pageBanner .= "<span>下一页</span> <span>尾页</span> ";
}else{
$pageBanner .= "<a href='?p=$totalPages'>$totalPages</a> ";
$pageBanner .= "<a href='?p=$next'>下一页</a> <a href='?p=$totalPages'>尾页</a>";
}
echo $pageBanner;
}
}
调用示例
//导入工具类
include('Paging.class.php');
//导入数据库操作类
include_once('../../../test/MYSQLi/test_02_mysqli_connAction.php');
$conn = new ConnectAction;
//调用查询总条数函数
$total =$conn->cnt();
$page=isset($_GET['p'])?$_GET['p']:1;
$pageSize = 5;
//调用分页查询函数,返回查询结果
//$obj = $conn->page($page,$pageSize);
//print_r($obj);
$page = new PageTool($total,$pageSize,$page);
echo $page->pageMain();
效果截图
总页数小于等于7时
总页数大于7时