Heim >Backend-Entwicklung >PHP-Tutorial >这个分页哪里写的不对?明明是显示5页 为什么显示所有的?
那个shoupage明明是设置的5啊 为什么还是显示所有的页 而且我把shoupage的值随便改还是显示所有的 没变化
<code><?php function fenye(){ global $page,$pagenum,$shoupage,$pageoffset; echo "<div >"; echo "<ul id="ul2">"; echo '<li>'.$page.'/'.$pagenum.'页|</li>'; if($page==1){ echo '<li>首页|</li>'; echo '<li>上一页|</li>'; }else{ echo '<li> <a href="'.%24_SERVER%5B" script_name>首页</a>|</li>'; echo '<li> <a href="'.%24_SERVER%5B" script_name>上一页</a>|</li>'; } 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 '<div>'; echo '<ul id="ul1">'; $shoupage=5; $pageoffset=($shoupage-1)/2; $start=1; $end=$pagenum; for($i=$start;$i<a href="'.%24_SERVER%5B" script_name>'.($i).'</a>'; } echo '</ul>'; echo '</div>'; if($page==$pagenum){ echo '<li>|下一页|</li>'; echo '<li>尾页|</li>'; }else{ echo '<li>|<a href="'.%24_SERVER%5B" script_name>下一页</a>|</li>'; echo '<li> <a href="'.%24_SERVER%5B" script_name>尾页</a>|</li>'; } echo '</ul>'; echo ''; }; ?></code>
那个shoupage明明是设置的5啊 为什么还是显示所有的页 而且我把shoupage的值随便改还是显示所有的 没变化
<code><?php function fenye(){ global $page,$pagenum,$shoupage,$pageoffset; echo "<div >"; echo "<ul id="ul2">"; echo '<li>'.$page.'/'.$pagenum.'页|</li>'; if($page==1){ echo '<li>首页|</li>'; echo '<li>上一页|</li>'; }else{ echo '<li> <a href="'.%24_SERVER%5B" script_name>首页</a>|</li>'; echo '<li> <a href="'.%24_SERVER%5B" script_name>上一页</a>|</li>'; } 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 '<div>'; echo '<ul id="ul1">'; $shoupage=5; $pageoffset=($shoupage-1)/2; $start=1; $end=$pagenum; for($i=$start;$i<a href="'.%24_SERVER%5B" script_name>'.($i).'</a>'; } echo '</ul>'; echo '</div>'; if($page==$pagenum){ echo '<li>|下一页|</li>'; echo '<li>尾页|</li>'; }else{ echo '<li>|<a href="'.%24_SERVER%5B" script_name>下一页</a>|</li>'; echo '<li> <a href="'.%24_SERVER%5B" script_name>尾页</a>|</li>'; } echo '</ul>'; echo ''; }; ?></code>
@Eapen 他已经说出了原因。
这边给出一个我写的demo,复制粘贴即可运行。
若是消化了,你也就学会了分页,若还有不知道的可随时问我:
<code>$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; // 后面显示多少天记录 </code>
/---分页函数---/
function display_data($np,$dp,$offset_forward,$offset_after){
<code> $length=1000; // 设置记录数 if ($length==0) { echo '没有数据!'; } $total_page=ceil($length/$dp); // 计算总页数。 /*---对页数进行限制:必须大于0 小于总页数---*/ if (!isset($np)) { $np=1; }else{ if ($np$total_page) { $np=$total_page; } } $btn="<style type="text/css">.page{margin-left:15px;}</style>"; $btn.="<a href="%22.%24_SERVER%5B" php_self>首页</a>"; $btn.="<a href="%22.%24_SERVER%5B" php_self>上一页</a>"; if ($total_page$i"; } }else{ // 若是总页数大于要显示的分页数 ... if ($np$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$i"; } }else{ //若是当前页加上偏移量会小于总页数 .... $start_page=$np-$offset_after; $end_page=$np+$offset_forward; for ($i=$start_page;$i$i"; } } } } $btn.="<a href="%22.%24_SERVER%5B" php_self>下一页</a>"; $btn.="<a href="%22.%24_SERVER%5B" php_self>尾页</a>"; echo $btn; /*---给当前页添加样式--*/ echo function \$cn(cn){ return document.getElementsByClassName(cn); } var page=\$cn('page'); for (var i=0;i<page.length if page></page.length></code>
EOT;
<code>} display_data($np,$dp,$offset_forward,$offset_after); // 执行分页逻辑</code>
?>
啊 分页写的好复杂。。。
如果只是想问为什么全都显示出来的话
问题出在30 31行
<code>$start=1; $end=$pagenum;</code>
去掉这两行就可以了。。虽然还是有其他问题