ホームページ  >  記事  >  バックエンド開発  >  PHPのページング原理 ページングコード ページングクラスの生成方法例の詳細説明

PHPのページング原理 ページングコード ページングクラスの生成方法例の詳細説明

墨辰丷
墨辰丷オリジナル
2018-06-01 10:22:241262ブラウズ

この記事では、主に PHP ページングの原理、PHP ページング コード、および PHP ページング クラスの作成チュートリアルを詳しく紹介します。興味のある方は参照してください。

ページング表示は非常に一般的な方法です。これは、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
S ...この SQL ステートメントのセットは、実際には $ pageisize = 10 の場合、テーブル内のテーブルの各ページの SQL ステートメントを取得して、次のようにテンプレートを要約できます。
SELECT * From Table Limit ($ CurrentPageid -1)) * $ PAGESIZE, $ PageSize
このテンプレートを対応する値と上記の SQL ステートメントのセットに取り込んで、正しいかどうかを確認します。データを取得する方法という最も重要な問題を解決したら、あとはパラメータを渡し、適切な SQL ステートメントを作成し、PHP を使用してデータベースからデータを取得して表示するだけです。


2. ページング コードの説明: 5 つのステップ

コードは完全に説明されており、自分のメモ帳にコピーして直接使用できます

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>雇员信息列表</title>
</head>
<?php 
    //显示所有emp表的信息
    //1.连接数据库
    $conn=mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;1234abcd&#39;) or die(&#39;连接数据库错误&#39;.mysql_error());
    //2.选择数据库
    mysql_select_db(&#39;empManage&#39;);
   //3.选择字符集
    mysql_query(&#39;set names utf8&#39;);
   //4.发送sql语句并得到结果进行处理
    //4.1分页[分页要发出两个sql语句,一个是获得$rowCount,一个是通过sql的limit获得分页结果。所以我们会获得两个结果集,在命名的时候要记得区分。
分页 (四个值 两个sql语句)。]
  $pageSize=3;//每页显示多少条记录
   $rowCount=0;//共有多少条记录
    $pageNow=1;//希望显示第几页
    $pageCount=0;//一共有多少页 [分页共有这个四个指标,缺一不可。由于$rowCount可以从服务器获得的,所以可以给予初始值为0;
$pageNow希望显示第几页,这里最好是设置为0;$pageSize是每页显示多少条记录,这里根据网站需求提前制定。
.$pageCount=ceil($rowCount/$pageSize),既然$rowCount可以初始值为0,那么$pageCount当然也就可以设置为0.四个指标,两个0 ,一个1,另一个为网站需求。]
         //4.15根据分页链接来修改$pageNow的值
         if(!empty($_GET[&#39;pageNow&#39;])){
            $pageNow=$_GET[&#39;pageNow&#39;];
        }[根据分页链接来修改$pageNow的值。]
     $sql=&#39;select count(id) from emp&#39;;
     $res1=mysql_query($sql);
    //4.11取出行数
     if($row=mysql_fetch_row($res1)){
        $rowCount=$row[0];        
    }//[取得$rowCount,,进了我们就知道了$pageCount这两个指标了。]
    //4.12计算共有多少页
     $pageCount=ceil($rowCount/$pageSize);
    $pageStart=($pageNow-1)*$pageSize;
    
     //4.13发送带有分页的sql结果
     $sql="select * from emp limit $pageStart,$pageSize";//[根据$sql语句的limit 后面的两个值(起始值,每页条数),来实现分页。以及求得这两个值。]
    $res2=mysql_query($sql,$conn) or die(&#39;无法获取结果集&#39;.mysql_error());
     echo &#39;<table border=1>&#39;;[    echo "<table border=&#39;1px&#39; cellspacing=&#39;0px&#39; bordercolor=&#39;red&#39; width=&#39;600px&#39;>";]
 "<tr><th>id</th><th>name</th><th>grade</th><th>email</th><th>salary</th><th><a href=&#39;#&#39;>删除用户</a></th><th><a href=&#39;#&#39;>修改用户</a></th></tr>";    while($row=mysql_fetch_assoc($res2)){
        echo "<tr><td>{$row[&#39;id&#39;]}</td><td>{$row[&#39;name&#39;]}</td><td>{$row[&#39;grade&#39;]}</td><td>{$row[&#39;email&#39;]}</td><td>{$row[&#39;salary&#39;]}</td><td><a href=&#39;#&#39;>删除用户</a></td><td><a href=&#39;#&#39;>修改用户</a></td></tr>";    }
     echo &#39;</table>&#39;;
     //4.14打印出页码的超链接
     for($i=1;$i<=$pageCount;$i++){
         echo "<a href=&#39;?pageNow=$i&#39;>$i</a> ";//[打印出页码的超链接]
     
     }
     //5.释放资源,关闭连接
     mysql_free_result($res2);
    mysql_close($conn);
?>
</html>

3. シンプルなページング クラス共有

簡易分類制作を1つ発表します。このクラスの原理と手順を理解していれば、他の複雑なクラスも類推して理解できるようになります。ソース コードをアップロードするだけで、プロジェクト内で直接使用できます。

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


<?php 
// 数据库连接常量 
 define(&#39;DB_HOST&#39;, &#39;localhost&#39;); 
 define(&#39;DB_USER&#39;, &#39;root&#39;); 
 define(&#39;DB_PWD&#39;, &#39;&#39;); 
 define(&#39;DB_NAME&#39;, &#39;guest&#39;); 
  
 // 连接数据库 
 function conn() 
 { 
   $conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME); 
   mysqli_query($conn, "set names utf8"); 
  return $conn; 
} 
 
//获得结果集 
function doresult($sql){ 
 $result=mysqli_query(conn(), $sql); 
  return $result; 
 } 
 
 //结果集转为对象集合 
 function dolists($result){ 
  return mysqli_fetch_array($result, MYSQL_ASSOC); 
 } 
 
 function totalnums($sql) { 
  $result=mysqli_query(conn(), $sql); 
 return $result->num_rows; 
 } 
  
 
 // 关闭数据库 
 function closedb() 
 { 
   if (! mysqli_close()) { 
    exit(&#39;关闭异常&#39;); 
   } 
} 
 
?>

ページング実装コード:

<?php 
 include &#39;mysqli.func.php&#39;; 
 // 总记录数 
 $sql = "SELECT dg_id FROM tb_user "; 
 $totalnums = totalnums($sql); 
  
 // 每页显示条数 
 $fnum = 8; 
 
 // 翻页数 
 $pagenum = ceil($totalnums / $fnum); 
 
 //页数常量 
 @$tmp = $_GET[&#39;page&#39;]; 
  
 //防止恶意翻页 
 if ($tmp > $pagenum) 
   echo "<script>window.location.href=&#39;index.php&#39;</script>"; 
  
 //计算分页起始值 
 if ($tmp == "") { 
  $num = 0; 
} else { 
  $num = ($tmp - 1) * $fnum; 
 } 
// 查询语句 
 $sql = "SELECT dg_id,dg_username FROM tb_user ORDER BY dg_id DESC LIMIT " . $num . ",$fnum"; 
 $result = doresult($sql); 
 
 // 遍历输出 
 while (! ! $rows = dolists($result)) { 
   echo $rows[&#39;dg_id&#39;] . " " . $rows[&#39;dg_username&#39;] . "<br>"; 
 } 
  
 // 翻页链接 
 for ($i = 0; $i < $pagenum; $i ++) { 
   echo "<a href=index.php?page=" . ($i + 1) . ">" . ($i + 1) . "</a>"; 
 } 
 
 ?>

概要: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

PHP で Excel ファイルをアップロードして MySQL データベースにデータをインポートする


php

例外のスローと特定の種類の例外のキャッチについての詳細な説明

php

array_merge_recursive Arrayマージ

以上がPHPのページング原理 ページングコード ページングクラスの生成方法例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。