时间:2021-07-01 10:21:17 帮助过:4人阅读
";
echo ''.$page.'/'.$pagenum.'页| ';
if($page==1){
echo '首页| ';
echo '上一页| ';
}else{
echo '首页| ';
echo '上一页| ';
}
if($pagenum>$shoupage){
if($page>$pageoffset){
$start=$page-$pageoffset;
$end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;
}else{
$start=1;
$end=$pagenum>$shoupage?$shoupage:$pagenum;
}
if($page+$pageoffset>$pagenum){
$start=$start-($page+$pageoffset-$end);
}
}
echo '';
echo '';
$shoupage=5;
$pageoffset=($shoupage-1)/2;
$start=1;
$end=$pagenum;
for($i=$start;$i<=$end;$i++){
echo '- '.($i).'
';
}
echo '
';
echo '';
if($page==$pagenum){
echo '|下一页| ';
echo '尾页| ';
}else{
echo '|下一页| ';
echo '尾页| ';
}
echo '';
echo '';
};
?>
那个shoupage明明是设置的5啊 为什么还是显示所有的页 而且我把shoupage的值随便改还是显示所有的 没变化
";
echo ''.$page.'/'.$pagenum.'页| ';
if($page==1){
echo '首页| ';
echo '上一页| ';
}else{
echo '首页| ';
echo '上一页| ';
}
if($pagenum>$shoupage){
if($page>$pageoffset){
$start=$page-$pageoffset;
$end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;
}else{
$start=1;
$end=$pagenum>$shoupage?$shoupage:$pagenum;
}
if($page+$pageoffset>$pagenum){
$start=$start-($page+$pageoffset-$end);
}
}
echo '';
echo '';
$shoupage=5;
$pageoffset=($shoupage-1)/2;
$start=1;
$end=$pagenum;
for($i=$start;$i<=$end;$i++){
echo '- '.($i).'
';
}
echo '
';
echo '';
if($page==$pagenum){
echo '|下一页| ';
echo '尾页| ';
}else{
echo '|下一页| ';
echo '尾页| ';
}
echo '';
echo '';
};
?>
@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 <<
EOT;
}
display_data($np,$dp,$offset_forward,$offset_after); // 执行分页逻辑
?>
啊 分页写的好复杂。。。
如果只是想问为什么全都显示出来的话
问题出在30 31行
$start=1;
$end=$pagenum;
去掉这两行就可以了。。虽然还是有其他问题