ホームページ > バックエンド開発 > PHPチュートリアル > PHP&MYSQLのページング原理と実装_PHPチュートリアルについて黙って語る

PHP&MYSQLのページング原理と実装_PHPチュートリアルについて黙って語る

WBOY
リリース: 2016-07-21 15:57:55
オリジナル
848 人が閲覧しました

この記事を読む前に、PHP の知識と MYSQL クエリ操作の基本を習得していることを確認してください。

Webプログラムとしては、会員データや記事データなど無数のデータを扱うことが多いですが、会員数が数十人程度であれば1ページに表示することも可能です。 Web サイトに何千人、あるいは何十万人ものメンバーがいる場合、すべてのメンバーを 1 つのページで開くと、ブラウザーと閲覧者の両方にとって拷問になります。

PHP を学習する初心者は誰でもページネーションについて頭を悩ませることになると思いますが、Momo の投稿を読めば、きっと頭を撫でて「ページネーションがとても簡単だったことが分かりましたね?」と言うでしょう。実際、今すぐ新鮮な空気を深呼吸して、サイレンスが少しずつ説明するのを注意深く聞いてください。

1,000個のデータを処理して各ページに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ページ 2 ilimit 20,10 // 3 ページ目
limit 30,10 // ページ 4
...
ルールはありますか?はい、最初のパラメータはページをめくるたびに 10 ずつ増加しますが、2 番目のパラメータは変更されません。
つまり、ページ数に応じて最初のパラメータの値を変更してみると、ページ単位でデータを表示できるということになりますが、原理はとても簡単でしょうか?

しかし、ページ数に応じて最初のパラメータの値を変更するにはどうすればよいでしょうか?まず、ページ番号の値が必要です。これは、URL の GET メソッドを使用して取得できます。
たとえば、index.php?page=18
この種の URL アドレスはどこでも見られるので、ほとんどの人がよく知っていると思います。page パラメーターの機能は、表示するページ数を渡すことです。 。

コードの一部を通じてそれがどのように実装されるかを見てみましょう:





コードをコピーします コードは次のとおりです:

/*

著者:silently
日付: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); // 操作するデータベースを選択します

/*
まず、データベースを何ページに分割する必要があるかを決定するために、データベース内にどれだけのデータがあるかを取得する必要があります。具体的な計算式は
の合計数です。データを各ページに表示されるアイテム数で割ると、十分すぎる量になります。
つまり、10/3=3.3333=4 余りがある場合は、1 ずつ切り上げなければなりません。
*/

$total=mysql_num_rows(mysql_query("select * from table")); // クエリデータの総数
$pagenum=ceil($total/$num); // ページ番号パラメータの場合渡されたページが合計ページ数より大きい場合、エラー メッセージが表示されます
If($page>$pagenum || $page == 0){
Echo "Error: Can Not Found The page .";終了します。

$offset=($page-1)*$num; -1)*10=10。

$info=mysql_query("select * from table limit $offset,$num"); //対応するページ番号に表示するデータを取得します
while($it=mysql_fetch_array($info)){
Echo $それ[ '名前']."
";

$show=($i!= $page)?"$i":"$i";
Echo $ show." "; 現在のページの場合、ページング情報を表示します。残りのページ番号は太字で表示されます。 現在のページが 3 ページ目の場合、
*/



と表示されます。上記のコードを注意深く読み、データベース接続とクエリ テーブルを実際のものに置き換えると、その実行効果がわかります。

とても簡単ではないでしょうか? 頭を使えば、よりパーソナライズされた表示にすることができます。「ホームページ、前のページ、次のページ、」の形式でページングを実装する方法です。最後のページ"?

OK、水柱を満たし終えたら、もう終わりにしましょう。 ^_^



コードをコピーします
コードは次のとおりです:


/*

作成者:silently
日付:2006-12-03

*/

$page=isset($_GET['page'])?intval($_GET['page ']):1; //この文は、page=18 のページの値を取得するものです。ページが存在しない場合、ページ番号は 1 です。 = $ Num = 10; // 1 ページあたり 10 個のデータを表示します

$ db = mysql_connect ("LocalHost", "ROOT", "7529639"); // データベース接続を作成します
Mysql_SELECT_DB ("CR_DOWNLOAD");操作するデータベース

/*
まず、データベースを何ページに分割する必要があるかを決定するために、データベース内にどのくらいのデータがあるかを取得する必要があります。具体的な計算式は、
データベースの合計を数値で割ったものです。各ページに表示される項目の合計数を切り捨て、余りを 1 で四捨五入します。
つまり、10/3=3.3333=4 余りがある場合は、1 ずつ切り上げなければなりません。
*/

$result=mysql_query("select * from cr_userinfo");
$total=mysql_num_rows($result); //すべてのデータをクエリします

$url='test.php';//このページの URL を取得します

//ページ番号calculation $ pagenum = ceil($ total/$ num); ;//次のページ
$offset=($page-1)*$num ;

//ページング ナビゲーション バーコードの開始:
$pagenav="ページを表示 ".($total?($offset+1):0)."-"。 min($offset+10,$total)." records, total $total records ";


//ページが 1 つしかない場合は、関数から抜けます:
if($pagenum<= 1) false を返します

$pagenav.=" ホームページ "; '$ url?page=$prepg'>前のページ "; else $pagenav.=" 前のページ ";
if($nextpg) $pagenav.=" 次のページ "; else $pagenav.=" 次のページ ";
$pagenav.=" 最後のページ< a> ";

//ドロップダウン ジャンプ リスト、すべてのページ番号をループします:
$pagenav.=" ページに移動 ページ, 合計 $pagenum ページ";

//渡されたページ番号パラメーターが合計ページ数より大きい場合、エラー メッセージが表示されます
If($page> $pagenum){
Echo " エラー: ページが見つかりません ".$page
}

$info=mysql_query("select * from cr_userinfo limit $offset,$num");これは、対応するページ番号に表示する必要があります
While($it=mysql_fetch_array($info)){
. // データを表示
echo "
"
echo $pagenav ;// ページングナビゲーションを出力

?>


ところで、実際のアプリケーションでは、リストに関してはほとんどの場合ページングが使用されます。そうすれば、ページングが必要なときにいつでもこの関数を呼び出すことができます。

http://www.bkjia.com/PHPjc/317716.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/317716.html技術記事この記事を読む前に、PHP の知識と MYSQL クエリ操作の基本を習得していることを確認してください。 Web プログラムとして、メンバーなどの無数のデータを処理する必要があることがよくあります...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート