簡體   English   中英

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

[英]how to create pagination with next and previous button?

碼:

<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

請問我該怎么做?

謝謝

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

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

顯示。

$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM