php实现分页选择按钮的三种方式

<?php


//分页类
class Page{
const PAGE_ALL = 0; //默认使用全部分页内容
const PAGE_STR = 1; //
const PAGE_CLI = 2; //
const PAGE_SEL = 3; //
const PAGE_STR_CLI = 4; //
const PAGE_STR_SEL = 5; //
const PAGE_CLI_SEL = 6; //


/*
* 分页方法
* @param1 string $basename,请求的脚本文件
* @param2 int $counts,总记录数
* @param3 int $page,当前页码
* @return string,具有分页点击a标签的字符串
*
* 示例:总共多少条记录,每页显示多少条记录,当前是第几页,<a>首页</a>,<a>前一页</a>,后一页,末页
*/
public static function show($basename,$counts,$page = 1,$chose = 0){
//计算出总页数
$pagesize = $GLOBALS['config']['admin_goods_pagecounts'];
$pageCounts = ceil($counts / $pagesize);


//计算上一页和下一页
$prev = ($page == 1) ? $page : ($page - 1);
$next = ($page == $pageCounts) ? $page : ($page + 1);

//使用定界符来平凑字符串
$str = <<<ENDF
<span id="str_page">
总共有{$counts}条记录,每页显示{$pagesize}条,当前是第{$page}页&nbsp;&nbsp;
<a href="{$basename}&page=1">首页</a>
<a href="{$basename}&page={$prev}">上一页</a>
<a href="{$basename}&page={$next}">下一页</a>
<a href="{$basename}&page={$pageCounts}">末页</a>&nbsp;&nbsp;</span>
ENDF;


//增加一个类似点击按钮,1,2,3,4,5
//需求:1,2,3...---->1 ... 3,4,5 ...------->1 ... 5,6,7 ...
$click = '<span id="click_page">';
for($i = 1;$i <= $pageCounts;$i++){
if($page > 2){
//1 ... $page,$page+1,$page+2
//当页数大于等于3的时候
//一定要保留第一页
if($i == 1)$click .= "<a href='{$basename}&page=1'>1</a>&nbsp;&nbsp;...";
else{
//判断当前页是否为选中页
if($i == $page){
//从当前页开始,显示后三页
$click .= "<a href='{$basename}&page={$i}'>{$i}</a>&nbsp;&nbsp;";//当前页

//后两页,因为可能当前点击的就是末页,那么就不应该再有后面的页数了
$temp = $i + 1;
//后一页
if($temp <= $pageCounts){
$click .= "<a href='{$basename}&page={$temp}'>{$temp}</a>&nbsp;&nbsp;";
$temp = $i + 2;
//后两页
if($temp <= $pageCounts){
$click .= "<a href='{$basename}&page={$temp}'>{$temp}</a>&nbsp;&nbsp;";
}
}

}
}
}else{
//1,2,3 ...
//点击是前2页
//判断$pageCounts是否有三页
$click .= "<a href='{$basename}&page=1'>1</a>&nbsp;&nbsp;";
//判断是否有第二页
if($pageCounts >= 2){
$click .= "<a href='{$basename}&page=2'>2</a>&nbsp;&nbsp;";


//判断是否有第三页
if($pageCounts >= 3){
$click .= "<a href='{$basename}&page=3'>3</a>&nbsp;&nbsp;";
}
}
//中断执行
break;
}
}


//追加点
if($page <= $pageCounts - 3){
//如果当前点击的页是后三页中的任意一页,就不需要加上...
$click .= '...</span>';
}else{
$click .= '</span>';
}


//select下拉框分页
$select = "<span id='select_page'>&nbsp;&nbsp;<select οnchange=\"location.href='{$basename}&page='+this.value\">";
//循环遍历
for($i = 1;$i <= $pageCounts;$i++){
if($page == $i){
//默认选中当前页
$select .= "<option value='{$i}' selected='selected'>{$i}</option>";
}else{
$select .= "<option value='{$i}'>{$i}</option>";
}
}


//完善select
$select .= "</select></span>";


//返回当前拼凑好的分页
//判断用户需求,来进行选择性返回
switch($chose){
case 0:
default:
return $str . $click . $select;
case 1:
return $str;
case 2:
return $click;
case 3:
return $select;
case 4:
return $str . $click;
case 5:
return $str . $select;
case 6:
return $click . $select;
}


}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值