1

申し訳ありませんが、私はPHPの初心者です。PHP でページネーション効果を記述する方法を学びたいと思います。ネット上にはこれに関する多くのチュートリアルがあることを知っています。私はそれを検索し、それらへの参照を持っています。自分で試してみて、他のリソースへの参照がない場合でも、PHP でページネーション効果を記述する方法はまだわかりません。

さて、PHPでページネーションを書く上で基本的かつ重要なことは何か知りたいです。詳細を教えていただける方がいらっしゃいましたら、よろしくお願いいたします。

4

2 に答える 2

4

この例では、PHP で使用するデータベースとして一般的な MySQL を使用します。一般的な原則は他のデータベースにも当てはまりますが、SQL を使用して結果を得る正確な方法は異なります。

ページネーションの本質は、たとえば 105 などの多数のレコードがあり、一度に表示するレコードの数をより少なく、管理しやすい数 (たとえば 10) だけにしたいということです。これを行うには、レコードの総数を調べる方法と、レコードのサブセットのみを選択する方法を知る必要があります。

まず、レコードがいくつあるかを調べます。このために、COUNT(*) を使用して、テーブル内のレコードをカウントします。テーブルが Users という名前の場合:

SELECT COUNT(*) FROM Users;

テーブルには 105 個のレコードがあると言ったので、これは結果を返し105ます。各ページには 10 個のレコードがあると言ったので、合計で何ページあるかを計算します。105 / 10 = 10.5; 10 ページの後の余分なレコードには独自のページが必要なため、切り上げて 11 にします。ということで、全部で11ページ。Web ページには、ユーザーが 1 から 11 までのページを選択できるコントロールが表示されます。

すべてのレコードをフェッチする代わりに、一度に 1 ページだけをフェッチします。MySQL では、通常、LIMITキーワードを使用してこれを行います。これにより、レコードの範囲を選択できます。LIMIT構文は次のように機能します: LIMIT $SKIP, $COUNT$SKIPはスキップする結果セット内のレコード数、$COUNTは返す数です。(実際には、利用可能なレコードが少ない場合に備えて、レコードまで取得します。) $COUNT

ユーザーはページ 6 を要求しました。これは、表示したい結果の前に 5 ページをスキップする必要があることを意味します。それぞれ 10 レコードのページで、これは 5 * 10 レコード、つまり 50 レコードをスキップすることを意味します。つまり、$SKIP = ($PAGE_NUMBER - 1) * $PAGE_SIZE. クエリは次のようになります。

SELECT User_ID, UserName, City, State from Users LIMIT 50, 10;

これにより、テーブルのレコード 51 ~ 60 が得られます。

LIMIT の仕組みの詳細については、ドキュメントを参照してください。

http://dev.mysql.com/doc/refman/5.5/en/select.html

これで、1 ページのレコードができました。ただし、レコードの番号付けは順序によって異なります。上記のクエリでは、順序が定義されていないため、予測できない結果が得られます。(データベースは、特定の順序を使用するように指示しない限り、任意の順序でレコードを返すことができます。) したがって、ページ付けを行うには、レコードの順序を定義する必要があります。ORDER BY を使用して順序を定義します。

SELECT User_ID, UserName, City, State from Users ORDER BY UserName LIMIT 50, 10;

これにより、結果のさまざまなページを表示することができ、6 ページを表示すると、5 ページのレコードの後と 7 ページのレコードの前のレコードが含まれていることが常にわかります。

(レコードに自然な順序付けがない場合は、これを正しく機能させるために任意の順序付けを定義する必要があります。)

ページネーションを説明するために PHP について言及する必要はないと思うので、この回答では PHP について言及することはまったく避けました。ページネーションは、完全にデータの処理の問題です。これを理解したら、チュートリアルを読んで理解できると思います。そうすれば、これを行うための PHP の書き方を理解することができます。

于 2012-08-31T02:50:51.060 に答える
1
  1. ページ番号を取得する
  2. 各ページに表示するアイテムの数を把握します。
  3. mysql コマンド「LIMIT」を使用して、オフセットを取得し、必要な行数を選択します。

クラスを使いたいですか?http://net.tutsplus.com/tutorials/php/how-to-paginate-data-with-php/

それとも単純なスクリプトを変更するだけですか? http://pastebin.com/J8nTk1q5

PHP を初めて使用する場合は、PHP をさらに学習する必要があります。そうしないと、将来混乱する危険があります。

于 2012-08-31T02:50:31.210 に答える