2015-05-24 56 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); 
      } 
      ?>