2015-05-24 97 views
1

所以,我有這打破了網頁的表格這個分頁代碼,它的所有工作... p1限制對分頁功能的網頁

但是......如果有太多的頁面看起來難看,像這樣: enter image description here

我是新進的PHP,這是我當前的代碼:

<?php 
     function pagination($page,$num_page) 
     { 
      $max_pages = 15; 
      echo'<ul class="pagination" style="list-style-type:none; text-align: center;">'; 
      $prevpage = $page-1; 
      if ($page != 1) { 
       echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>'; 
       echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>'; 
      } 
      for($i=1; ($i<=$num_page)/* && ($i<=$max_pages)*/;$i++) 
      { 

       if($i==$page) 
       { 
        echo'<li style="padding:5px;">'.$i.'</li>'; 
       } 

       else 
       { 
        echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>'; 
       } 
      } 
      $nextpage = $page+1; 
      if ($page != $num_page) 
      { 
       echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>'; 
       echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>'; 
      } 
      echo'</ul>'; 
     } 
     if($num_page>1) 
     { 
      pagination($page,$num_page); 
     } 
     ?> 

我只是想,所以它看起來像這樣去改變它:

$max_pages=10; 
if ($num_pages > $max_pages) 
echo "<< < 1 ... 3 4 5 6 7 8 9 10 ... 81 > >>" 

我該怎麼辦?我不知道如何以一種很好的方式現在= X 但我不想只是給定的代碼,我想了解它是如何工作的,爲什麼我應該這樣做。

BTW,

$num_pages是,該表將有頁數。

$page是當前頁面

$max_pages將要顯示的最大頁數。

回答

1
<?php 
    function pagination($page,$num_page) 
    { 
     $max_pages = 15; 
     //Set a start and end point for page links 
      $start= $page-5; 
      $end= $page+5; 
      if($start < 1) $start= 2; 
      if($end > $num_page) $end= $num_page -1; 
     // 
     echo'<ul class="pagination" style="list-style-type:none; text-align: center;">'; 
     $prevpage = $page-1; 
     if ($page != 1) { 
      echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>'; 
      echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>'; 
      echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=1">1</a></li> &nbsp;$nbsp ... &nbsp;$nbsp ';//Add first page link and ... 
     } 
     //Change the starting value of $i to start and end were you want it. 
     for($i=$start; ($i<=$end)/* && ($i<=$max_pages)*/;$i++) 
     { 

      if($i==$page) 
      { 
       echo'<li style="padding:5px;">'.$i.'</li>'; 
      } 

      else 
      { 
       echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>'; 
      } 
     } 
     $nextpage = $page+1; 
     if ($page != $num_page) 
     { 
      echo ' &nbsp;$nbsp ... &nbsp;$nbsp <li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $num_page . '">' . $num_page . '</a></li>'; //Add last page link and ... 
      echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>'; 
      echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>'; 
     } 
     echo'</ul>'; 
    } 
    if($num_page>1) 
    { 
     pagination($page,$num_page); 
    } 
    ?> 

好的,我添加了幾行,2個變量,並改變了我的起始值。我評論了我做了什麼來解釋它。如果你不明白,請告訴我。

+0

這是一個不錯的方法,但它的頁數後生成的頁面和頁面負數。但非常感謝你的關注; – Phiter

+0

哎呦。我應該添加一張支票以確保開始時間不低於一次。另一個檢查結果是不是太高。抱歉。 – Zaper127

+0

好的,如果你想使用它,修復了代碼。 – Zaper127

0

我改變了我的代碼,這一點,現在工作得很好:)

<?php 
      function pagination($page,$num_page) 
      { 

       echo'<ul class="pagination" style="list-style-type:none; text-align: center;">'; 
       $prevpage = $page-1; 
       if ($page != 1) { 
        echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>'; 
        echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>'; 
       } 
       $max_pages = 8; // How many page number you wish to display to the left and right sides of the current page 
       $index_start = ($page - $max_pages) <= 0 ? 1 : $page - $max_pages; 
       $index_finish = ($page + $max_pages) >= $num_page ? $num_page : $page + $max_pages; 
       for ($i = $index_start; $i <= $index_finish; $i++) 
       { 
        if ($page == $i) 
        { 
         echo'<li style="padding:5px;">'.$i.'</li>'; 
        } 
        else 
        { 
         echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>'; 
        } 
       } 
       $nextpage = $page+1; 
       if ($page != $num_page) 
       { 
        echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>'; 
        echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>'; 
       } 
       echo'</ul>'; 
      } 
      if($num_page>1) 
      { 
       pagination($page,$num_page); 
      } 
      ?>