2017-05-03 41 views
0

代碼:如何使用下一個和上一個按鈕創建分頁?

<table> 
    <tr style="background: white url(bg.gif) repeat-x left top;color: #fff;"> 
     <th>College Id</th> 
     <th>College Name</th> 
     <th>Website</th> 
     <th>Field</th> 
     <th>City</th> 
     <th>Action</th> 
    </tr> 

    <?php 
     $per_page=10; 
     if (isset($_GET["page"])) 
     { 
     $page = $_GET["page"]; 
     } 
     else { 
     $page=1; 
     } 
     $start_from = ($page-1) * $per_page; 

     $sql="select * from all_colleges LIMIT $start_from, $per_page"; 
     $result = mysqli_query($link,$sql); 
     while ($row = mysqli_fetch_array($result)) 
     { 
    ?> 
    <tr> 
     <td><?php echo $row['college_id']; ?></td> 
     <td><?php echo $row['college_name']; ?></td> 
     <td><?php echo $row['website']; ?></td> 
     <td><?php echo $row['field']; ?></td> 
     <td><?php echo $row['city']; ?></td> 
     <td> 
     <a class='view' title='view' href='view.php?id=<?php echo $row['college_id']; ?>'> 
      <img src='gridview/view.png' alt='view' /> 
     </a> 

     <a class='update' title='Update' href='update.php?id=<?php echo $row['college_id']; ?>'> 
      <img src='gridview/update.png' alt='Update' /> 
     </a> 

     <a class='delete' title='delete' href='delete.php?ad_id=<?php echo $row['college_id']; ?>'> 
      <img src='gridview/delete.png' alt='delete' /> 
     </a> 
     </td> 
    </tr> 
    <?php 
     } 
    ?> 
</table> 

<div style="padding: 10px;"> 
    <?php 
    $query = "select * from all_colleges"; 
    $result = mysqli_query($link, $query); 
    $total_records = mysqli_num_rows($result); 
    $total_pages = ceil($total_records/$per_page); 
    echo "<center><a href='admin.php?page=1' style='padding:5px;'>".'previous'."</a>"; 
    for ($i=1; $i<=$total_pages; $i++) { 
    echo "<a href='admin.php?page=".$i."'>".$i."</a>"; 
    } 
    echo "<a href='admin.php?page=$total_pages'>".'next'."</a></center>"; 
    ?> 
</div> 

在這段代碼我想創建一個在這裏一個和上一個按鈕分頁此代碼工作正常,但它表現出不同勢分頁也就是說,如果結果的數目是200,然後會顯示如下

previous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 next 

,但我要像

previous 1 2 3 4 5 ....8 9 next 

我怎樣才能做到這一點,請幫助?

謝謝

+0

另外,你的'previous'和'next'看起來像是'first'和'last'。 _(只是一個便條)_ – Thamilan

+0

是的,上一個和下一個似乎工作的第一個和最後一個 – kevin

回答

2

如果要顯示數字,可以檢查循環的每次迭代。
在下面的代碼中,只有:

  • 前兩頁
  • 最後兩頁
  • 當前頁面
  • 每兩頁的左側和當前的
  • 頁面右側

被顯示。

$skipped = false; 
for ($i = 1; $i <= $total_pages; $i++) { 
    if ($i < 3 || $total_pages- $i < 3 || abs($page - $i) < 3) { 
     if ($skipped) 
      echo '<span> ... </span>'; 
     $skipped = false; 
     echo "<a href='admin.php?page=" . $i . "'>" . $i . "</a>"; 
    } else { 
     $skipped = true; 
    } 
} 

如果你有很多頁,大循環是不必要的。
相反,你可以使用三種不同的循環:

$done = []; 

for ($i = 1; $i < 3; $i++) { 
    $done[$i] = true; 
    //echo 
} 

if ($page > 3) 
    echo '<span> ... </span>'; 

for ($i = $page - 2; $i < $page + 3; $i++) { 
    if (isset($done[$i]) 
     continue; 

    $done[$i] = true; 
    //echo 
} 

if ($page < $total_pages - 3) 
    echo '<span> ... </span>'; 

for ($i = $total_pages- 2; $i < $total_pages; $i++) { 
    if (isset($done[$i]) 
     continue; 

    $done[$i] = true; 
    //echo 
} 

要解決的另外兩個按鈕(previousnext),鏈接到$page - 1$page + 1,而不是1$total_pages

+0

謝謝法老它的工作完美 – kevin

+0

我已編輯答案,包括一個不同的解決方案,如果你有很多頁面@kevin – Pharaoh

相關問題