PHP实现分页功能(三)含有省略号(可调节省略号位置)的分页

以下方法是基于THINKPHP5框架开发,实现含有省略号的分页功能,如下图
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
此种分页和上一篇PHP实现分页功能(二)百度分页样式,固定分页个数有些类似;这种分页样式也是需要固定分页的个数,如上图,每次固定显示6个数量的分页(含省略号),点击当前页后,当前页 往后延固定个数及为尾数,如若不够固定分页的个数就往前延对应的个数即可。

控制器代码

/*
 *分页功能
 * 参数:p 当前页码数
 *      listpage 每页显示的数据条数
 *      totalpage 总页数
 * 		fenye 分页个数
 * 		num 当前分页延后个数
 * */
public function index(){
	$p=input('p',1,'intval');//当前页码数,默认显示第一页
	$listpage=input('listpage',8,'intval');//每页显示的数据条数
	$count=Db::name('shujubiao')->count();//数据总数
	$totalpage=ceil($count/$listpage);//总页数
	$fenye=input('listpage',6,'intval');//分页个数
	$guding=input('listpage',5,'intval');//固定个数,带表分离开的1..x,省略号,当前页;最小为3,代表省略号在第二位
	$num=input('listpage',1,'intval');//当前分页延后个数
    $num=$fenye-$guding>=$num?$num:$fenye-$guding;//3带表分离开的1,省略号,当前页
    //尾页
    $end=$p+$num>$totalpage?$totalpage:$p+$num;//当前页后面显示个页数
	$product=Db::name('shujubiao')->page($p,$listpage)->select();
	
	$this->assign('product',$product);
	$this->assign('p',$p);
	$this->assign('totalpage',$totalpage);
	$this->assign('fenye',$fenye);
	$this->assign('end',$end);
	$this->assign('guding',$guding);
	return $this->view->fetch('页面');
}

html代码

<div class="page_box">
    <div class="p_b_c">

        <input type="hidden" id="page" value="{$p}">
        <input type="hidden" id="class_id" value="{$class_id}">
        <input type="hidden" id="totalpage" value="{$totalpage}">

        <div id="prev-page" class="pn_btn prev-page"></div>
        <ul>
			{if condition="$totalpage>$fenye"}
				{for start="1" end="$guding-1"}
				<li class="page_number_item" onclick="page({$i},{$class_id})">{$i}</li>
				{/for}

				<li class="page_number_item {$p<$fenye?'active2':''}">...</li>

				{if condition="$p<$fenye"}
					{for start="$guding-1" end="$fenye+1"}
					<li class="page_number_item" onclick="page({$i},{$class_id})">{$i}</li>
					{/for}
				{else /}
					{for start="$end-($fenye-$guding)" end="$end+1"}
					<li class="page_number_item" onclick="page({$i},{$class_id})">{$i}</li>
					{/for}
				{/if}
			{else /}
				{for start="1" end="$totalpage+1"}
				<li class="page_number_item" onclick="page({$i},{$class_id})">{$i}</li>
				{/for}
			{/if}

        </ul>

        <div id="next-page" class="pn_btn next-page"></div>
    </div>
</div>

js代码

//分页
//当前页跳转
function page(page) {
    location.href = "/模块名/控制器名/方法名/p/" + page + '.html';
}
/*
 * 上一页功能
 * */
$(document).on('click', '#prev-page', function() {
    var page = $("#page").val(); //获取当前分页
    page--;
    if (page < 1) {
        page = 1;
        alert('已经是第一页了');
        return false;
    }
    location.href = "/模块名/控制器名/方法名/p/" + page + '.html';
});

/*
 * 下一页功能
 * */
$(document).on('click', '#next-page', function() {
    var page = $("#page").val(); //获取当前分页
    var totalpage = $("#totalpage").val();
    page++;
    if (page > totalpage) {
        page = totalpage;
        alert('已经是最后一页了');
        return false;
    }
    location.href = "/模块名/控制器名/方法名/p/" + page + '.html';
});

如果想要加入分类功能,请参照第一篇分类功能文章,PHP实现分页功能(一)上一页/下一页
我们只需要调节$fenye分页条数、 $num当前分页延后个数, $guding省略号所在位置,三个参数,即可实现每页显示分页的个数、及尾数以及省略号位置,很方便。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值