php 分页 显示前5页,php - 这个分页哪里写的不对?明明是显示5页 为什么显示所有的?...

迷茫2017-04-10 16:49:202楼

@Eapen 他已经说出了原因。

这边给出一个我写的demo,复制粘贴即可运行。

若是消化了,你也就学会了分页,若还有不知道的可随时问我:

$np=@$_GET['page']; // 获取当前页

/*

* 设置要显示的页数。

* 例如显示 5 页

* 为了合理的显示,需要设置一个偏移量:你肯定想得到偏移量会是:(5-1)/2=2;----》 5 6 nowpage 8 9

* 那如果显示的是6页该怎么办?

* 该不会也是 (6-1)/2 吧! 所以你其实需要自己手动算一下的,只要凑成6页即可:3+1+2=6 所以设: $offset_forward=3 $offset_forward=2 1 表示当前页 --->5 6 7 nowpage 9 10

*/

$dp=12; //显示多少页

$offset_forward=6; // 前面显示多少条记录

$offset_after=5; // 后面显示多少天记录

/---分页函数---/

function display_data($np,$dp,$offset_forward,$offset_after){

$length=1000; // 设置记录数

if ($length==0)

{

echo '没有数据!';

}

$total_page=ceil($length/$dp); // 计算总页数。

/*---对页数进行限制:必须大于0 小于总页数---*/

if (!isset($np))

{

$np=1;

}else{

if ($np<1)

{

$np=1;

}

if ($np>$total_page)

{

$np=$total_page;

}

}

$btn="";

$btn.="首页";

$btn.="上一页";

if ($total_page<=$dp) // 若是总页数小于要显示的分页数 ...

{

$start_page=1;

$end_page=$total_page;

for ($i=$start_page;$i<=$end_page;++$i)

{

$btn.="$i";

}

}else{ // 若是总页数大于要显示的分页数 ...

if ($np<=$dp) // 若是当前页小于等于要显示的页数..

{

$start_page=1;

$end_page=$dp;

for ($i=$start_page;$i<=$end_page;++$i)

{

$btn.="$i";

}

}else{ // 若是当前页大于要显示的页数..

if ($np+$offset_forward>$total_page) //若是当前页加上偏移量会大于总页数 ....

{

$start_page=$total_page-$offset_forward-$offset_after;

$end_page=$total_page;

for ($i=$start_page;$i<=$end_page;++$i)

{

$btn.="$i";

}

}else{ //若是当前页加上偏移量会小于总页数 ....

$start_page=$np-$offset_after;

$end_page=$np+$offset_forward;

for ($i=$start_page;$i<=$end_page;++$i)

{

$btn.="$i";

}

}

}

}

$btn.="下一页";

$btn.="尾页";

echo $btn;

/*---给当前页添加样式--*/

echo <<

function \$cn(cn){

return document.getElementsByClassName(cn);

}

var page=\$cn('page');

for (var i=0;i

{

if (page[i].textContent==$np)

{

page[i].style.color='red';

}else{

page[i].style.color='inherit';

}

}

EOT;

}

display_data($np,$dp,$offset_forward,$offset_after); // 执行分页逻辑

?>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值