首頁 >後端開發 >php教程 >这个分页哪里写的不对?明明是显示5页 为什么显示所有的?

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

WBOY
WBOY原創
2016-06-06 20:18:331383瀏覽

那个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>

去掉这两行就可以了。。虽然还是有其他问题

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn