迷茫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); // 执行分页逻辑
?>