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>
            {for start="1" end="$guding-1"}
            <li onclick="page({$i},{$class_id})">{$i}</li>
            {/for}
            <li class="{$p<$fenye?'active1':''}">...</li>
            {if condition="$p<$fenye"}
            {for start="$guding-1" end="$fenye+1"}
            <li onclick="page({$i},{$class_id})">{$i}</li>
            {/for}
            {else /}
            {for start="$end-($fenye-$guding)" end="$end+1"}
            <li 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省略号所在位置,三个参数,即可实现每页显示分页的个数、及尾数以及省略号位置,很方便。

猜你喜欢

转载自blog.csdn.net/qq_36129701/article/details/108658615