この記事を読む前に、PHP の知識と MYSQL クエリ操作の基本を習得していることを確認してください。
Webプログラムとしては、会員データや記事データなど無数のデータを扱うことが多いですが、会員数が数十人程度であれば、1ページに表示することができます。 Web サイトに複数のメンバーがいる場合、メンバーが数千人、さらには数十万人いる場合、メンバー全員を 1 つのページで開くと、ブラウザーと閲覧者の両方にとって苦痛になります。
PHP を学習している初心者は誰でもページネーションについて頭の痛い問題を抱えていると思いますが、Mo Mo のこの投稿を読めば、きっと頭を撫でて、「ページネーションがとても簡単だったことが分かりましたね?」と言うでしょう。実際、今すぐ新鮮な空気を深呼吸して、サイレンスが少しずつ説明するのを注意深く聞いてください。
1,000個のデータを処理して各ページに10個ずつ表示したいとします。この場合、まずmysqlで10個の情報を抽出する方法を見てみましょう。
テーブル制限 0,10 から * を選択
上記は非常に単純な mysql クエリステートメントであり、その機能は table という名前のテーブルから 10 個のデータを抽出し、すべてのフィールドの値を取得することです。
このセクションの「limit 0,10」がポイントで、この中の0は0を始点として、次の10は10個のデータを表示することになります。そして、10を始点として表示する必要があります。 20枚目まではどのように書けばよいでしょうか?
おそらく多くの人は「10、20 個まで」とはっきり言うでしょう。ああ、これは間違っています。正しい書き方は「limit 10,10」です。この後のパラメータは終了点ではなく、抽出される数値です。
10 個のデータを抽出する方法がわかったので、1,000 個のデータを抽出するには、この種のクエリを 100 回実行することを意味します。つまり、次のクエリを実行する必要があります。
制限 0,10 リミット 10,10 //2 ページ目
制限 20,10 //ページ 3
制限 30,10 //ページ 4
…
何かパターンが見えますか?はい、最初のパラメータはページをめくるたびに 10 ずつ増加しますが、2 番目のパラメータは変更されません。
つまり、最初のパラメータの値をページ数に応じて変更してみると、ページ単位で表示できるのですが、原理は非常にシンプルです。
しかし、ページ数に応じて最初のパラメータの値を変更するにはどうすればよいでしょうか?まず、ページ番号の値が必要です。これは、URL の GET メソッドを使用して取得できます。
この種の URL アドレスはどこでも見られるので、ほとんどの方がご存知だと思います。page パラメーターの機能は、表示するページ数を渡すことです。
コードの一部を通じてそれがどのように実装されるかを見てみましょう:
/*
作者:サイレント
日付:2006-12-03
*/
$page=isset($_GET['page'])?intval($_GET['page']):1; //この文は page=18 の page の値を取得します。次にページ番号は 1 です。
$ num = 10;$db=mysql_connect("host","name","pass") //データベース接続を作成します
$select=mysql_select_db("db",$db) //操作するデータベースを選択します
/*
まず、データベースを何ページに分割する必要があるかを決定するために、データベース内にどれだけのデータがあるかを取得する必要があります。具体的な式は
つまり、10/3=3.3333=4 余りがある場合は、1 を追加する必要があります。
*/
$total=mysql_num_rows(mysql_query("select id from table")); //データの総数をクエリします。id はデータベース内で自動的に割り当てられるフィールドです
$pagenum=ceil($total/$num);
//渡されたページ番号パラメータが総ページ数より大きい場合、エラーメッセージが表示されます
$totalrecord=mysql_num_rows($result);
$pagesize=10;
$page=isset($_GET['ページ'])?$_GET['ページ']:1;
$pagecount=($totalrecord % $pagesize==0)?$totalrecord / $pagesize:(int) ($totalrecord / $pagesize)+1;
$page=($page>$pagecount || $page<1 )?1:$page;
$start=$pagesize*($page-1);
$res=mysql_query("select * from tablename order by ID desc limit $start,$pagesize")
While($rsmysql_fetch_array($res)){
エコー $rs['name']."
";
} なぜなら
以下で使用するため、詳細は説明しません。他にもたくさんの方法がありますが、それらは不可欠です。
/*ページング情報を表示します。現在のページの場合は太字で表示されます。3ページ目の場合は次のように表示されます。
1 2 3 4 5 6
*/
上記のコードを注意深く読み、データベース接続とクエリ テーブルを実際のものに置き換えると、その実行効果がわかります。
www.bkjia.com