這個分頁哪裡寫的不對?明明是顯示5頁 為什麼顯示所有的?

來源:互聯網
上載者:User
那個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 ''; };?>

    回複內容:

    那個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;

    去掉這兩行就可以了。。雖然還是有其他問題

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.