php数字分页超过隐藏,php分页 动态显示11条其他隐藏

本文详细介绍了如何使用MySQL数据库结合自定义的pages()和pages1()函数实现分页显示。通过设置每页显示条数和当前页码,利用LIMIT子句获取指定范围的数据,并展示了两种不同的分页样式。核心在于理解pages()函数的逻辑,该函数根据总条数、当前页和每页显示条数动态生成分页链接。
摘要由CSDN通过智能技术生成

一、每次动态显示11条其他隐藏

调用pages()函数分页样式如下图:

65d6b9ed2ca8285e0e6760d1c16ab7eb.png

调用pages1()函数分页样式如下图:

92cb9c4c7808cd35601e77ac1b624c81.png

调用pages()函数结合mysql数据库查询,完成分页下数据信息显示

前提说明:分页的核心原理是mysql查询语句中使用limit子语句和自定义的pages()函数,我的这个实例中通过mysql获取总条数和数据信息只做参考,重点是掌握pages()函数,因为mysql这部分,根据跟人代码的前后场景可能不同,我的这里使用了面向对象的形式。你可以自己在这里链接mysql数据库,让后自己写select查询等等,最终吧自己获取的$total,$page,$pagesize三个值传递到pages()函数即可,获取分页样式

//列表分页

$total = $this->db->count();     //信息总条数为:14条

$pagesize = 1;      //每页显示条数:1条

$page = max(intval($_GET['page']), 1);  //当前页码

$offset = $pagesize*($page-1);     //每页开头信息的位置,偏移量

$house_data = $this->db->select('','*',"$offset, $pagesize");   //根据分页显示每页对应的数据信息

$datas = array();

foreach($house as $hk=>$hv){

foreach($house_data as $hdk=>$hdv){

if($hv['id']==$hdv['id']){

$datas[$hk]['house_name']=$hv['house_name'];

$datas[$hk]['thumb']=$hv['thumb'];

$datas[$hk]['address']=$hv['address'];

$datas[$hk]['estate']=$hv['estate'];

$datas[$hk]['style']=$hv['style'];

$datas[$hk]['price']=$hv['price'];

$datas[$hk]['yuntar']=$hdv['yuntar'];

}

}

}

$pages = pages($total, $page, $pagesize);    //这里调用pages()函数,显示分页的样式

//$pages1 = pages1($total, $page, $pagesize); 或者这里也可以调用pages1()显示分页样式

在下面我定义了pages()和pages1()两个函数,都可以实现分页样式显示,只是内部代码逻辑有所差别,这里把2个函数都罗列出来,提供大家参考

定义pages()函数

/**

* $num 总条数:我的测试条数是14条

* $curr_page 当前分页

* $perpage 每页显示条数默认20条

* setpages 默认每页显示6个页码链接比如:上一页 1..[ 3 4 5 6 7 8 9 10 11]..14 下一页

*/

function pages($num, $curr_page, $perpage = 20,$setpages = 10){

if($num > $perpage) {

$page = $setpages;     //显示页码数量

$offset = ceil($setpages/2-1);     //计算偏移量

$pages = ceil($num / $perpage);    //总页数

$from = $curr_page - $offset;      //通过 当前页-偏移量=获取分页区间的起始页码

$to = $curr_page + $offset;   //通过 当前页+偏移量=获取分页区间的结束页码

if($page >= $pages) {  //如果按照区块显示的页数比总页数多或者相等时,就循环显示出所有页码

$from = 2;

$to = $pages-1;

} else {

if($from <= 1) {    //页码区间起始位小于等于1时

$from = 2;

$to = $page-1;

}  elseif($to >= $pages) {  //页码区间末位大于等于总页数时

$from = $pages-($page-2);

$to = $pages-1;

}

$more = 1;

}

$multipage .= ''.$num.L('page_item').'';

if($curr_page>0) {

$prvpage = ($curr_page-1)>0 ? ($curr_page-1) : 1;

$multipage .= ' 上一页';

if($curr_page==1) {

$multipage .= ' 1';

} elseif($curr_page>6 && $more) {

$multipage .= ' 1..';

} else {

$multipage .= ' 1';

}

}

//动态显示页码区间

for($i = $from; $i <= $to; $i++) {

if($i != $curr_page) {

$multipage .= ' '.$i.'';

} else {

$multipage .= ' '.$i.'';

}

}

$nextpage = ($curr_page+1)

if($curr_page

if($curr_page

$multipage .= ' ..'.$pages.' 下一页';

} else {

$multipage .= ' '.$pages.' 下一页';

}

} elseif($curr_page==$pages) {

$multipage .= ' '.$pages.' 下一页';

} else {

$multipage .= ' '.$pages.' 下一页';

}

}

return $multipage;

}

定义pages1()函数

/**

* $num 总条数:我的测试条数是14条

* $curr_page 当前分页

* $perpage 每页显示条数默认20条

*/

function pages1($num, $curr_page, $perpage = 20){

$multipage = '';  //定义变量返回分页字符串

if($num>$perpage){

$pages = ceil($num/$perpage);    //计算总分页数

$from = $curr_page - 4;

$to = $curr_page + 4;

if($curr_page>=1 && $curr_page<=6){

for($i=1;$i<=9;$i++){

$multipage .= ' '.$i.'';  //

}

$multipage .= '..'.$num.'';  //

}

if($curr_page>6 && $curr_page<=$num-4){

$multipage .= ' 1..';  //

for($i=$from;$i<=$to;$i++){

$multipage .= ' '.$i.'';  //

}

}

if($curr_page>$num-4 && $curr_page<=$num){

$multipage .= ' 1..';  //

for($i=$num-9;$i<=$num;$i++){

$multipage .= ' '.$i.'';  //

}

}

}

return $multipage;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值