ホームページ  >  記事  >  バックエンド開発  >  PHPでページングを実装するための原則と手順

PHPでページングを実装するための原則と手順

王林
王林オリジナル
2019-09-02 14:55:058189ブラウズ

PHPでページングを実装するための原則と手順

#1. 設定情報のカプセル化

1. 設定ファイル config.php を作成できます。定数として使用する必要があるすべての構成を設定します。コードは次のとおりです:

<?php
//数据库服务器
define(&#39;DB_HOST&#39;, &#39;localhost&#39;);
//数据库用户名
define(&#39;DB_USER&#39;, &#39;root&#39;);
//数据库密码
define(&#39;DB_PWD&#39;, &#39;secret&#39;);
//库名
define(&#39;DB_NAME&#39;, &#39;book&#39;);
//字符集
define(&#39;DB_CHARSET&#39;, &#39;utf8&#39;);

2. 2. connection.php ページを抽出します。将来データベースに接続する必要がある場合は、 connection.php ファイルを含める必要があるだけです。

コードは次のとおりです:

<?php
include &#39;config.php&#39;;$conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);
if (mysqli_errno($conn))
 {  mysqli_error($conn);
    exit;
  }
mysqli_set_charset($conn, DB_CHARSET);
?>

今後、各ファイルに connection.php ファイルを直接含めることでデータベース接続を実現できます:

include &#39;connection.php&#39;;

2. 表示ページングの実装

# ページは、次の基本要素を含むように実装する必要があります:

PHPでページングを実装するための原則と手順

ページ番号の制御は、URL アドレス バーを介してページ番号の値を渡すことによって実現されます。ページ番号に関する情報をpage.phpに追記することで、より有効な情報を算出することができます。ページングを制御する URL の効果は次のとおりです。

PHPでページングを実装するための原則と手順

コード実装では、これら 2 つの値は実際にはオフセット (offset) と量 (num) を通じて実現されます。 ) ページネーションの制限後。

limit offset , num

PHPでページングを実装するための原則と手順

#1 ページに 5 つの項目が表示されると仮定します。ページングの制限を制御するための最終的な式は次のとおりです:

offset的值为 (n-1)*5
num 为规定的5

3. 実装手順;

1 . ページングに必要なパラメータの計算

1-1、総数


通过查询user表的count(id),得到总数$count。
$count_sql = &#39;select count(id) as c from user&#39;;
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到总的用户数
$count = $data[&#39;c&#39;];

1-2、現在のページ


初回入力時page.php ページ、URL は http://www.php.com/page.php で、その後に ?page=1 ページ識別番号はありません。

したがって、ページ識別番号を手動で作成し、それを現在のページ番号変数 $page に渡す必要があります。

ユーザーから渡されたページに小数が含まれている可能性があるため、強制的な型変換 (int) $_GET['page'] を実行します。

最初の書き方:

$page = isset($_GET[&#39;page&#39;]) ? (int) $_GET[&#39;page&#39;] : 1;

2 つ目の書き方:


if (isset($_GET[&#39;page&#39;])) {
    $page = (int) $_GET[&#39;page&#39;];
} else {
    $page = 1;
}

1-3、最後のページ


すべての 1 ページは整数でなければなりません。小学校の算数と同じです。平均して、5.6 人が何個のリンゴを準備する必要があります。答えは 6 でなければなりません。

ページが 20.3 ページになる場合は、丸め関数 ceil を使用する必要があります。ページネーション数を21とします。

合計数を各ページに表示されるデータの数で割って、合計ページ数を取得します。

//每页显示数
$num = 5;
$total = ceil($count / $num);

1-4. 上下ページの異常事態の制御


ユーザーが最初のページで前のページをクリックし、次のページをクリックした場合はどうすればよいですか?最後のページ??

この場合、データが範囲を超えるため、ページネーション時にデータが表示されません。

この異常な状況を考慮する必要があることは明らかです。したがって、ページング中に最初のページが 1 減算される場合は、それを最初のページとします。

最終ページに追加した場合は最終ページ、つまり例外制御が完了します。

if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}

2. SQL ステートメント

ページングの核心は、オフセットと num によってページごとの表示数を制御することであると前に述べました。 SQL ステートメント。

$num = 5;
$offset = ($page - 1) * $num;

$num と $offset を SQL ステートメントに適用します:

$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";

URI のページング値を制御します

echo &#39;<tr>
    <td colspan="5">
    <a href="page.php?page=1">首页</a>
    <a href="page.php?page=&#39; . ($page - 1) . &#39;">上一页</a>
    <a href="page.php?page=&#39; . ($page + 1) . &#39;">下一页</a>
    <a href="page.php?page=&#39; . $total . &#39;">尾页</a>
    当前是第 &#39; . $page . &#39;页  共&#39; . $total . &#39;页
    </td>
    </tr>&#39;;

4. 全体的なコード実装

include &#39;connection.php&#39;;
$count_sql = 'select count(id) as c from user';
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到总的用户数
$count = $data['c'];
$page = isset($_GET[&#39;page&#39;]) ? (int) $_GET[&#39;page&#39;] : 1;
/*
if (isset($_GET[&#39;page&#39;])) {
    $page = (int) $_GET[&#39;page&#39;];
} else {
    $page = 1;
}
 */
 
//每页显示数
$num = 5;
//得到总页数
$total = ceil($count / $num);
if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}
$offset = ($page - 1) * $num;
$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";
$result = mysqli_query($conn, $sql);
if ($result && mysqli_num_rows($result)) {
    //存在数据则循环将数据显示出来
    echo '';
    while ($row = mysqli_fetch_assoc($result)) {
        echo '';
        echo '';
        echo '';
        echo '';
        echo '';
        echo '';
        echo '';
    }
    echo '';
    echo '
' . $row['username'] . '' . date('Y-m-d H:i:s', $row['createtime']) . '' . long2ip($row['createip']) . '编辑用户删除用户
首页 上一页 下一页 尾页 当前是第 ' . $page . '页 共' . $total . '页
'; } else { echo '没有数据'; } mysqli_close($conn);

#上記のコンテンツは、単純なページング機能を実現しています。その他の関連コンテンツについては、PHP 中国語 Web サイトを参照してください: PHP ビデオ チュートリアル

以上がPHPでページングを実装するための原則と手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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