この記事を読む前に、PHP の知識と MYSQL クエリ操作の基本を習得していることを確認してください。
Webプログラムとしては、会員データや記事データなど無数のデータを扱うことが多いですが、会員数が数十人程度であれば1ページに表示することが可能です。しかし、もしあなたの Web サイトに数千人、さらには数十万人のメンバーがいる場合、それらをすべて 1 つのページで開くと、ブラウザーにとっても閲覧者にとっても苦痛になります。
PHP を学習する初心者は誰でもページネーションで頭を悩ませることになると思いますが、Momo の投稿を読めば、きっと頭を撫でて、「ページネーションってこんなに簡単だったっけ?」と思うはずです。実際、今すぐ新鮮な空気を深呼吸して、サイレンスが少しずつ説明するのを注意深く聞いてください。
1000個のデータを処理して各ページに10個ずつ表示したいとします。この場合、まずmysqlで10個の情報を抽出する方法を見てみましょう。 。
Select * from table limit 0,10
上記は非常に単純な mysql クエリ ステートメントであり、その機能は table という名前のテーブルから 10 個のデータを抽出し、すべての値を格納することです。フィールドの数が取得されます。
このセクションの「limit 0,10」がポイントで、この中の 0 は開始点の 0 で、次の 10 は 10 個のデータを表示するため、10 を使用する必要があります。表示される20番目のデータを書き込むにはどうすればよいですか?
おそらく多くの人は「10、20 個まで」とはっきり言うでしょう。ああ、これは間違っています。正しい書き方は「limit 10,10」です。この後のパラメータは終了点ではなく、抽出される数値です。
10 個のデータを抽出する方法がわかったので、1,000 個のデータを抽出するには、このクエリを 100 回実行することになります。つまり、次のクエリを実行する必要があります:
Limit 0,10 Page
制限 10,10もうですか?はい、最初のパラメータはページをめくるたびに 10 ずつ増加しますが、2 番目のパラメータは変更されません。
つまり、最初のパラメータの値をページ数に応じて変更してみると、ページ単位で表示できるということになりますが、原理は非常に簡単でしょうか?
しかし、ページ数に応じて最初のパラメータの値を変更するにはどうすればよいでしょうか?まず、ページ番号の値が必要です。これは、URL の GET メソッドを使用して取得できます。
たとえば、index.php?page=18
この種の URL アドレスは、どこにでもあることをご存知だと思います。ページ パラメーターの機能は、次の数を渡すことです。表示されるページ。
コードでどのように実装されるかを見てみましょう:
コードをコピー
コードは次のとおりです:
/*
作成者: 静かに
日付:2006-12-03
*/
$page =isset($_GET['page'])?intval($_GET['page']):1; //この文は、page=18 のページの値を取得します。ページ数は 1 です。
$ num = 10; // 1 ページあたり 10 個のデータを表示します
$ db = mysql_connect ("host", "name", "pass") // データベース接続を作成します
$ select = MySQL_SELECT_DB ("DB", $ DB); // 操作したいデータベースを選択します
/*
まず、データベースにどれだけのデータを取得する必要があるかで判断できます。特定のページ、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの、特定のもの 式は
合計です。データ数を各ページに表示される項目数で割った余りは 1 に四捨五入されます。
つまり、10/3=3.3333=4 余りがある場合は、1 ずつ切り上げなければなりません。
*/<<>
$ Total = MySQL_NUM_ROWS (mysql_query ("Select*from Table"); // データの総数
$ Pagenum = Ceil ($ Total/$ Num); //総ページ数を取得します
//渡されたページ番号パラメータが総ページ数より大きい場合、エラー メッセージが表示されます
If($page>$pagenum || $page == 0){
エコー "エラー: ページが見つかりません。";
終了
}
$offset=($page-1)*$num;制限値の最初のパラメータを取得します。最初のページが (1-1)*10=0 の場合、2 番目のページは (2-1)*10=10 になります。
$info=mysql_query("select * from table limit $offset,$num"); // 対応するページ番号に表示する必要があるデータを取得します
while($it=mysql_fetch_array() $info)) {
Echo $it['name']."
"; {
$show=($i!=$page)?"$i ":" $i";
Echo $show." ";
}
/*ページング情報を表示します。現在のページの場合は、次のように表示されます。太字の番号、残りのページ番号は、現在のページが 3 ページ目の場合、次のように表示されます。
*/
?>
上記のコードを注意深く読み、データベース接続とクエリ テーブルを実際のものに置き換えると、その実行効果がわかります。
非常に簡単ではありませんか? 頭を使って、よりパーソナライズされた表示にするだけです。「ホームページ、前のページ、次のページ、最後のページ」の形式を実装する方法です。ページングについてはどうですか?
OK、給水所に水を入れて終わりにします。 ^_^
コードをコピーします
コードは次のとおりです:
/*
作成者: Silently
日付:2006-12-03
*/
$page=isset($_GET['page'])?intval($_GET['page']):1; //この文は page=18 の page の値を取得します。次にページ番号は 1 です。
$ num = 10;データベース内にあるデータの量を取得し、何ページに分割するかを決定します。具体的な式は、
合計 データベースを各ページに表示されるアイテム数で割ると、余りが 1 になります。
つまり、10/3=3.3333=4 余りがある場合は、1 ずつ切り上げなければなりません。
*/
$result=mysql_query("select * from cr_userinfo");
$total=mysql_num_rows($result); //すべてのデータをクエリします
$url = 'test.php';// このページの URL を取得します
// ページ番号を計算します
$pagenum=ceil($total/$num) 🎜>$page=min($pagenum); ,$page);//ホームページを取得します
$prepg=$page-1;//前のページ
$nextpg=($page==$pagenum ? 0 : $page 1);//次のページ
$offset=($page-1)*$num; 10=0、2 ページ目は (2-1)*10=10 です。
//ページングナビゲーションバーコードの開始:
$pagenav="ページを表示 ".($total?($offset 1):0)."-< ;B>".min($offset 10,$total)." records, total $total records ";
// ページが 1 つしかない場合は、そこから飛び出す関数:
if($pagenum<=1) return false;
$pagenav.=" ホームページ ";
if($prepg) $pagenav.=" 前のページ "; else $pagenav.=" 前のページ "; if ($nextpg) $pagenav.=" 次のページ "; else $pagenav.=" 次のページ "; =" 最後のページ ";
//ドロップダウン ジャンプ リスト、すべてのページ番号をループします:
$ pagenav.="ページに移動 $ のページpagenum page";
//渡されたページ番号パラメータが総ページ数より大きい場合、エラー メッセージが表示されます
If($page>$pagenum){
Echo "エラー: ページが見つかりません ".$page;
}
$info=mysql_query("select * from cr_userinfo limit $offset,$num");データの表示に必要なページ数
while($it=mysql_fetch_array($info)){
Echo $it['username']
echo "
"; > echo "
";
echo $pagenav;//出力ページング ナビゲーション
?>
ところで、実際のアプリケーションについて詳しく見てみましょう。 、ほとんどの場合、リストに関してはページングを使用する必要があります。ページングが必要なときにいつでもこの関数を呼び出せるように、一般的なページング関数を作成してみてください。