Heim >Backend-Entwicklung >PHP-Tutorial >这个分页哪里写的不对?明明是显示5页 为什么显示所有的?

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

WBOY
WBOYOriginal
2016-06-06 20:18:331381Durchsuche

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn