ホームページ >バックエンド開発 >PHPチュートリアル >PHPページングの詳しい解説(例付き)_PHPチュートリアル
1. はじめに
ページング表示は、大量のデータを参照および表示する非常に一般的な方法であり、Web プログラミングで最も一般的に処理されるイベントの 1 つです。 Web プログラミングのベテランにとって、この種のコードを書くのは呼吸するのと同じくらい自然なことですが、初心者にとってはこの問題について混乱することが多いため、この問題を詳しく説明するために特別にこの記事を書き、読者の友人に知ってもらえるよう努めています。この記事を読み終えると、ページング表示の原理と実装方法がある程度理解できるようになります。この記事は初心者が読むのに適しており、すべてのサンプル コードは PHP で書かれています。
2. 原則
いわゆるページング表示とは、データベース内の結果セットが表示のために人為的にセクションに分割されることを意味します:
1 ページあたりのレコード数 ($PageSize)。
現在のページ ($CurrentPageID) は何ページですか?
今度は別の結果セットを与えるだけで、特定の結果を表示できます。
前のページ ($PReviousPageID)、次のページ ($NextPageID)、総ページ数 ($numPages) などの他のパラメーターについては、すべて前述の内容に基づいて取得できます。
MySQL データベースを例に挙げます。テーブルから特定のコンテンツを取得したい場合は、select * from table limit offset, rows を使用できます。次の一連の SQL ステートメントを見て、ルールを見つけてください。
最初の10レコード: *テーブル制限0,10から選択
11番目から20番目のレコード: *テーブル制限10,10から選択
21番目から30レコード: *テーブル制限20,10から選択
……
このセットSQL ステートメントの実際は、$PageSize=10 の場合にテーブル内の各ページからデータをフェッチするための SQL ステートメントです。このようなテンプレートを要約できます:
select * from table limit ($CurrentPageID - 1) * $PageSize, $ PageSize
このテンプレートを使用し、対応する値を上記の SQL ステートメントのセットに置き換えて、該当するかどうかを確認します。データを取得する方法という最も重要な問題を解決したら、あとはパラメータを渡し、適切な SQL ステートメントを作成し、PHP を使用してデータベースからデータを取得して表示するだけです。以下、具体的なコードを用いて説明していきます。
3. シンプルなコード
以下のコードを詳しく読んで、自分でデバッグして実行してください。一度変更して、検索などの独自の機能を追加することをお勧めします。
$page_string = '';
if( $page == 1 ){
$page_string .= '最初のページ|前のページ|';
}
else{
$page_string .= ' < a href=?page=1>最初のページ|前のページ|'
}
if( ( $page == $page_count) || ($page_count == 0) ){
$page_string .= '次のページ|最後のページ';
}
else{
$page_string .= '< ;a href=?page= '.($page+1).'>次のページ|最後のページ}
// データを取得そして結果を 2 次元配列形式で返します
if( $amount ){
$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
$result = mysql_query($sql);
while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
}
}else{
$rowset = array();
}
/ / 結果を表示するコードはないので、それは議論の範囲を超えています。foreach
?>
{
2 番目に説明する必要があるのは、異なるデータベースの互換性です。異なるデータベースでは結果のセクションを書き込む方法が異なります。
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
......
そのため、クラス内の結果を取得したい場合は、次の limitQuery メソッドを使用する必要があります。 pear db クラス。
よし、書き終わりました。