4

ページネーションには GET を使用し、?page=1 はページ 1 などです。

問題は、データを並べ替えたいのですが、GET を使用する方が良い方法です。

?page=1&sort=date

それを試してページ 2 をクリックすると、?page=2 に移動し、並べ替えが失われます。

私も試してみましたが、ページからページに移動すると、アドレスバーに が$_SERVER['QUERY_STRING']蓄積されてしまいます。?page=#

これが私のページネーションリンクの生成方法です:

<a href='{$_SERVER['PHP_SELF']}?page=$nextpage'>Next</a>

どうすればこれを行うことができますか?

4

13 に答える 13

8

次の行に沿って何かを行うことができます。

// Check if there are any GET parameters
if (!empty($_GET)) {
    $link = "?page=2";

    // Loop through the parameters
    foreach ($_GET as $parameter => $value) {
      // Append the parameter and its value to the new path
      $link .= "&" . $parameter . "=" . urlencode($value);
    }
}
于 2012-06-07T20:29:34.300 に答える
3

このスレッドをチェックしてみてください: How can I add GET variables to the end of the current page url using a form with php?

基本的に、を使用し$_SERVER['REQUEST_URI']て現在の URL と変数を取得し、リンクに get 変数を追加します。

于 2012-06-07T20:28:24.253 に答える
2

$_GETは配列であるため、その中の要素をループして新しい URL を再作成できます。PHP のページに$_GETは、配列をループして URL から GET パラメータを削除する方法を示す例を含む多くの例があります。

于 2012-06-07T20:30:03.100 に答える
2

すでに設定されている場合に、並べ替えパラメーターを URL に追加する場合は、次のようにすることができます。

$qs_sort = isset($_GET['sort']) ? '&sort=' . urlencode($_GET['sort']) : '';

次に、エコーするものを変更して、URL の末尾に<a>追加します。$qs_sort

<a href='{$_SERVER['PHP_SELF']}?page=$nextpage$qs_sort'>Next</a>
于 2012-06-07T20:30:14.023 に答える
1

ソート用のリンクを描画するときは、現在のページを検出し、そのページを含むリンクを書き留めます。また、ページネーターのリンクを描画するときに、検出された並べ替えでそれらを書き留めます。

あなたが2ページ目にいて、タイトルの降順でリストを並べ替えているとしましょう。リンクは次のようになります。

  • タイトル順
<a href="?page=2&amp;sort=title+desc>Title</a>
  • 並べ替え
<a href="?page=2&amp;sort=order+desc>Order</a>
  • ページネーション ページ 1
<a href="?page=1&amp;sort=title+desc>1</a>
  • ページネーション ページ 3
<a href="?page=3&amp;sort=title+desc>3</a>

等々...

于 2012-06-07T20:34:03.710 に答える
1

各ページに表示するアイテムの数を決定する必要があります。それがわかれば、ページ GET 変数を使用して、データベースから照会するアイテムのサブセットを簡単に決定できます。たとえば、各ページに 10 個のアイテムが表示されている場合、最初のページはアイテム 0 から 9 で、ページ 2 はアイテム 10 から 19 です。もちろん、これにはデータベースがデータのサブセットを選択する何らかの方法をサポートしている必要があります。

もちろん、データベースから一貫したクエリを使用すると、常に同じ方法で並べ替えられます。

于 2012-06-07T20:28:38.677 に答える
1

いくつかのオプションがあります。

  • 各ページネーション リンクに sort パラメータを追加します
  • ユーザーのセッションに最新の並べ替え列を保存します (これには、ユーザーが複数のタブを開いている場合にうまく機能しないという欠点があることに注意してください)
  • ページネーションに ajax を使用している場合は、ページ番号にイベント ハンドラーを追加し、javascript に現在の並べ替えフィールドを保存して、GET 要求で送信します。
于 2012-06-07T20:29:49.783 に答える
1

ここでできることはほとんどありません...

  1. GET パラメータを追加/変更する場合は、他のページへのすべてのリンクを追加で変更してください。並べ替え機能が選択されている場合は、<a href="?page=1">必ず追加してください。&sort=date

  2. リンクをクリックすると、ソートパラメータをjQueryで追加できます-

var _currentSortMethod = 'date';
$("a.someOtherLink").on('click',function(e){
  window.locaton.href = $(this).attr('href') + '&sort=' + _currentSortMethod;
  e.preventDefault();
});
于 2012-06-07T20:30:29.410 に答える
1

コードで URL リンクを制御している場合は、次のようにソート変数を URL リンクに再度渡す必要があります。

<?php     $sorting = $_REQUEST['sort'];
          $page = $_REQUEST['page'];
          $page = $page + 1;
          echo '<a href="datapage.php?page=' . $page . '&sort=' . $sorting. '>Next Page</a>';
?>
于 2012-06-07T20:31:11.767 に答える
1

これを試すことができます:

$query = new HttpQueryString();
$query->set("page", $nextPage);
echo "http://www.example.com/?" . $query->toString();

HttpQueryString クラスに関する追加のドキュメントを次に示します: http://www.php.net/manual/en/class.httpquerystring.php

それが役立つことを願っています!

于 2012-06-07T21:06:22.910 に答える
1

URLに追加するだけです。

<?php $sort = (isset($_GET['sort'])) ? "&sort=".$_GET['sort'] : ""; ?>

<a href="link.php?page=2<?php echo $sort; ?>">link</a>
于 2012-06-07T20:31:34.087 に答える
0

大規模なページネーションは通常、データベース API を介して行われます。$_SESSION 変数を使用して、小規模なページネーションをPHP セッション経由で行うことができます。

于 2012-06-07T20:29:51.680 に答える