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

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

WBOY
Release: 2016-06-06 20:18:33
Original
1380 people have browsed it

那个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>
Copy after login
Copy after login

回复内容:

那个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>
Copy after login
Copy after login

@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>
Copy after login

/---分页函数---/
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>
Copy after login

EOT;

<code>}
display_data($np,$dp,$offset_forward,$offset_after); // 执行分页逻辑</code>
Copy after login

?>

啊 分页写的好复杂。。。

如果只是想问为什么全都显示出来的话

问题出在30 31行

<code>$start=1;
$end=$pagenum;</code>
Copy after login

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

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template