簡體   English   中英

分頁顯示分頁顯示問題

[英]Pagination display issue with number pages

嘿,我的英語不是很好'但是我嘗試解釋清楚自己的意思。 我正在創建分頁,並且我所有的代碼都運行良好。

問題是,我只想顯示五個頁面,然后單擊下一步按鈕就隱藏了一個頁面並顯示了新頁面。 看起來像那樣。

next 12345 prev

next 23456 prev

謝謝大家的建議。

這是我的代碼:

 <?php

  $dbh = new PDO("mysql:host=localhost;dbname=northwind", "root", "123");


  $query = $dbh->prepare("SELECT ContactName FROM Customers");
  $query->execute();
  $numRows = $query->rowCount();


  if (isset($_GET['pn'])) {
      $pn = $_GET['pn'];
  } else {
      $pn = 1;
  }

  $startPage = 1;
  $perPage = 9;


  $lastPage = ceil($numRows / $perPage);


  if ($pn < 1) {
     $pn = 1;
  } else if ($pn > $lastPage) {
     $pn = $lastPage;
  }

  $controls = '';


   if ($pn != $lastPage) {

        $controls .= '<a id="next" href="' . $_SERVER['PHP_SELF'] . '?pn=' . ($pn + 1) . '"> next </a>';
   }


    for ($i=1; $i <= $lastPage; $i++) {

         if ($i == $pn) {
              $background = ' red;';
         } else {
              $background = ' green;';
         }

         $controls .= '<a id="page_' . $i . '" data-page="' . $i . '" class="num" style="background:' . $background . ' " href="' . $_SERVER['PHP_SELF'] . '?pn=' . $i . '"> ' . $i . '</a>';
    }

     if ($pn != $startPage) {

           $controls .= '<a href="' . $_SERVER['PHP_SELF'] . '?pn=' . ($pn - 1) . '"> prev </a>';
     }

      $controls .= "PAGE " . $pn . " of " . $lastPage ;


      $limit = "LIMIT " . ($pn-1) * $perPage . ', ' . $perPage;

      $query2 = $dbh->prepare("SELECT ContactName FROM Customers " . $limit . "");
      $query2->execute();

      $outputList = '';

      while($row = $query2->fetch(PDO::FETCH_OBJ)){ 

            $outputList .= '<h1>' . $row->ContactName . '</h1><hr />';

      } 

我建議您使用更簡單的方法。

讓我們考慮一個包含25個結果的頁面。 這意味着:第一頁范圍是:1-25第二頁范圍是:26-50,依此類推。

現在,當用戶請求第2頁時,我們應該向他顯示25-49的結果。 這意味着(第1頁)* 25的結果直到第* 25-1頁的結果= 25-49。

現在我們所需要的就是如何告訴SQL將這些考慮在內。

SELECT ContactName FROM Customers LIMIT 25 OFFSET 25;

將產生使用所需的結果。

現在,您只需要像以前一樣通過pn傳遞請求的頁面即可。 並打印接下來的1-3(無論如何)下一頁\\上一頁。

要知道有多少頁,只需執行另一個count sql查詢,它將為您提供結果並將其除以25。

暫無
暫無

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

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