ホームページ  >  記事  >  php教程  >  再版: ページング原理 + ページング コード + ページング クラスの作成

再版: ページング原理 + ページング コード + ページング クラスの作成

WBOY
WBOYオリジナル
2016-09-24 09:02:46930ブラウズ

ページング表示は、大量のデータを参照して表示する非常に一般的な方法であり、Web プログラミングで最も一般的に処理されるイベントの 1 つです。 Web プログラミングのベテランにとって、この種のコードを書くのは呼吸するのと同じくらい自然なことですが、初心者にとってはこの問題について混乱することが多いため、この問題について詳しく説明するためにこの記事を書きました。

1. ページングの原則:
いわゆるページング表示では、データベース内の結果セットを表示のために人為的にセクションに分割します。 ここでは 2 つの初期パラメーターが必要です:

ページごとのレコード数 ( $PageSize)?
現在のページ ($CurrentPageID) は何ページですか?

次に、別の結果セットを与えるだけで、特定の結果を表示できます。

前のページ ($PReviousPageID)、次のページ ($NextPageID)、総ページ数 ($numPages) などの他のパラメーターについては、すべて前述の内容に基づいて取得できます。

MySQL データベースを例に挙げると、テーブルから特定のコンテンツをインターセプトしたい場合は、SQL ステートメントを使用できます: select * from table limit offset, rows。次の一連の SQL ステートメントを見て、ルールを見つけてください。

最初の 10 レコード: select * from table limit 0,10
11 番目から 20 番目のレコード: select * from table limit 10,10
21 番目から 30 レコード: select * from table limit 20,10
……语 これSQL ステートメントのグループは、実際には $ PageSize = 10 の場合、テーブル内のテーブルの各ページの SQL ステートメントを要約できます:
Select * from Table Limit ($ CurrentPageid -1) * $ PageSize $ PAGESIZEaこのテンプレートを対応する値に取り込み、上記の SQL ステートメントを比較して、その値が正しいかどうかを確認します。データを取得する方法という最も重要な問題を解決したら、あとはパラメータを渡し、適切な SQL ステートメントを作成し、PHP を使用してデータベースからデータを取得して表示するだけです。




2. ページネーションコードの説明: 5つのステップ コードは完全に説明されており、直接使用するために自分のメモ帳にコピーできます

  1. 社員情報一覧
  2. //すべての emp テーブルの情報を表示します
  3. //1. データベースに接続します。
  4. $conn=mysql_connect('localhost','root','1234abcd') または die('データベースへの接続エラー'.mysql_error());
  5. 库 // 2. データベース 2 を選択します
  6. mysql_select_db('empManage');
  7. 符 // 3. 文字セットを選択します
  8. mysql_query('set names utf8');
  9. //4. SQL ステートメントを送信し、処理する結果を取得します
  10. //4.1 パグリング [パグリングは 2 つの SQL ステートメントを出力します。1 つは $ Rowcount を取得することであり、もう 1 つは SQL の制限を通じてページング結果を取得することです。したがって、2 つの結果セットが得られるため、名前を付けるときにそれらを区別することを忘れないようにする必要があります。
  11. ページング (4 つの値と 2 つの SQL ステートメント)。 】
  12. $rowCount=0;//合計レコード数
  13. O $ pagenow = 1 // 最初のページのページを表示したい
  14. ; C $ PageCount = 0; // ページは何ページありますか? $rowCountはサーバーから取得できるので初期値は0を与えることができます
  15. $pageNow は、どのページを表示するかを示します。ここでは 0 に設定するのが最適です。$pageSize は、Web サイトのニーズに応じて事前に決定されます。
  16. $pageCount=ceil($rowCount/$pageSize)、$rowCount の初期値は 0 なので、$pageCount はもちろん 0 に設定できます。 4 つのインジケーター、2 つは 0、1 つは 1、もう 1 つは Web サイトです要件。 】
  17. ’ ’ ’ to 3 to 3 not-----4.15 ページングリンクに従って $pageNow の値を変更します
  18. if(!empty($_GET['pageNow'])){
  19. $pageNow=$_GET['pageNow'];
  20. }[ページング リンクに基づいて $pageNow の値を変更します。 】
  21. $sql='emp から count(id) を選択';
  22. $res1=mysql_query($sql);
  23. through ’s ’ use ’s getting 4.11 ’ through ’ s ‐ ‐ ‐ ‐‐ 4.11 の行数を取り出します
  24. if($row=mysql_fetch_row($res1)){
  25. ️ $rowCount=$row[0];
  26. }//[$rowCount を取得します。入力後、2 つのインジケーター $pageCount がわかります。 】
  27. //4.12 ページ数を計算します
  28. $pageCount=ceil($rowCount/$pageSize);
  29. $pageStart=($pageNow-1)*$pageSize;
  30. //4.13 SQL 結果をページネーション付きで送信する
  31. $sql="select * from emp limit $pageStart,$pageSize";//[ページングは​​、$sql ステートメントの制限後の 2 つの値 (開始値、ページごとの項目数) に基づいて実装されます。そしてこれら 2 つの値を見つけます。】
  32. $res2=mysql_query($sql,$conn) または die('無法获取结果集'.mysql_error());
  33. echo '';[ echo "
    ";]
  34. ;删除用户< ;/tr>";        }
  35. echo '
  36. id名前学年メール給与删除用户修正用户< /th>";        while($row=mysql_fetch_assoc($res2)){
  37. echo "
  38. {$row['id']}{$row['name']}{$row ['成績']}{$row['メール']}{$row['給与']}修正用户
    ';
  39. //4.14打印出页コードの超链接
  40. for($i=1;$i<=$pageCount;$i++){
  41. echo "$i ";//[打印出页码的超链接]
  42. }
  43. //5.释放资源、关闭连接
  44. mysql_free_result($res2);
  45. mysql_close($conn);
  46. ?>


三、简単分型制作を公開しています

この種類の原理と手順を理解するだけで、他の単分型も可能ですそうではなく、直接上のソース コードは直接アクセスできます。

データベース操作クラス代コード:mysqli.func.php

  1. // データ库连接常量
  2. define('DB_HOST', 'localhost');  
  3. define('DB_USER', 'root');  
  4. define('DB_PWD', '');  
  5. define('DB_NAME', 'ゲスト');  
  6. // 连接続データ库
  7. 関数 conn()
  8. {
  9. $conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);  
  10. mysqli_query($conn, "set names utf8");  
  11. $conn を返します。  
  12. }
  13. //获得結果集
  14. 関数 doresult($sql){
  15. $result=mysqli_query(conn(), $sql);  
  16. $result を返す;  
  17. }
  18. //结果集转は对象集合
  19. 関数 dolists($result){
  20. return mysqli_fetch_array($result, MYSQL_ASSOC);  
  21. }
  22. 関数 totalnums($sql) {
  23. $result=mysqli_query(conn(), $sql);  
  24. return $result->num_rows;  
  25. }
  26. // 关闭データ库
  27. 関数がクローズされましたb()
  28. {
  29. if (! mysqli_close()) {
  30. exit('关闭异常');  
  31. }
  32. }
  33. ?>   


ページング実装コード:


  1. 「mysqli.func.php」を含める
  2. //レコードの総数
  3. $sql = "tb_user から dg_id を選択 ";
  4. $totalnums = totalnums($sql);
  5. //各ページに表示されるアイテムの数
  6. $fnum = 8;
  7. //めくったページ数
  8. $pagenum = ceil($totalnums / $fnum);
  9. // ページ番号定数
  10. @$tmp = $_GET['ページ']
  11. //悪意のあるページめくりを防止します
  12. if ($tmp > $pagenum)
  13. echo "<script>window.location.href='index.php'</script>";
  14. //ページングの開始値を計算します
  15. if ($tmp == "") {
  16. $num = 0;
  17. } 他 {
  18. $num = ($tmp - 1) * $fnum;
  19. }
  20. // クエリステートメント
  21. $sql = "SELECT dg_id,dg_username FROM tb_user ORDER BY dg_id DESC LIMIT " ",$fnum";
  22. $result = doresult($sql);
  23. // トラバース出力
  24. while (! ! $rows = dolists($result)) {
  25. echo $rows['dg_id'] . $rows['dg_username']
  26. }
  27. // ページめくりリンク
  28. for ($i = 0; $i "" .
  29. }
  30. ?>