PHP ページ付け

Subodh Poudel 2023年1月30日 PHP PHP Pagination
  1. PHP で行をページ付けするには、SQLSELECT ステートメントで LIMIT 句を使用する
  2. PHP のページネーションに PreviousNext のナビゲーション機能を追加する
PHP ページ付け

この記事では、SQLSELECT ステートメントで LIMIT 句を使用して PHP でページ付けを実行する方法を紹介します。LIMIT 句を使用して、特定のインデックスから始まる特定の行数を選択し、ページ付けとして表示します。

また、PHP ページ付けに PreviousNext のナビゲーション機能を追加する別の方法も示します。このメソッドは、対応するページを最初のメソッドにナビゲートするための追加機能を追加するだけです。

PHP で行をページ付けするには、SQLSELECT ステートメントで LIMIT 句を使用する

LIMIT 句を SELECT ステートメントとともに使用して、ページに表示する最初の n 個の結果を指定できます。ページを閲覧するための GET メソッドとして、anchor タグにページ番号を指定できます。この方法では、ページごとに表示される行数を定義し、データベースからすべての行を取得して、必要なページの総数を計算します。$_GET 配列を isset() 関数とともに使用して、ユーザーが要求したページ番号を取得できます。

たとえば、変数 $results_per_page を作成し、その中に 2 を格納します。mysqli_num_rows() 関数を使用して、データベースの行数を調べ、$number_of_results 変数に格納します。ceil() 関数を使用して、行を表示するために必要な総ページ数を決定します。$number_of_results 変数を ceil() 関数内の $results_per_page 変数で除算します。isset() 関数で $_GET スーパーグローバル変数を使用して、page 変数が設定されているかどうかを確認します。設定されていない場合は、page 変数を 1 に設定します。変数が設定されている場合は、値を page 変数に割り当てます。page 変数を 1 で減算し、それを $this_page_first_result 変数で乗算します。操作を変数 $this_page_first_result に格納します。LIMIT 句を使用して SQL ステートメントを SELECT * FROM alpha LIMIT ' . $this_page_first_result . ',' . $results_per_page. クエリを実行し、結果を表示します。最後に、for ループを作成して、page 変数と $number_of_page の間をループします。ループ内で、echo anchor タグを作成し、href 属性の値を index.php?page'.$page として書き込みます。anchor タグの間に page 変数を書き込みます。

以下の例では、データベースの alpha テーブルに 6つの行が含まれています。ページ付けを実行すると、ページごとに 2 行が表示されます。ceil() 関数は、行を表示するために必要なページの総数を決定します。最初は、$page 変数が設定されていないため、ページはページ 1 から始まります。$this_page_first_result 変数は、ユーザーが現在表示しているページ番号を決定します。変数 $this_page_first_result は、ページの最初の行を示します。変数 $results_per_page は、ページあたりの結果の数を示します。出力セクションには、index.php ページが表示されます。2 ページをクリックすると、データベースから次の 2 行が出力されます。

サンプルコード:

#php 7.x
<?php
$number_of_pages = ceil($number_of_results/$results_per_page);
if (!isset($_GET['page'])) {
    $page = 1;
} else {
    $page = $_GET['page'];
}
$this_page_first_result = ($page-1)*$results_per_page;
$sql='SELECT * FROM alpha LIMIT ' . $this_page_first_result . ',' . $results_per_page;
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result)) {
    echo $row['id'] . ' ' . $row['value']. '<br>';
}
for ($page=1;$page<=$number_of_pages;$page++) {
    echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}
?>

出力:

1 A 
2 B 
1 2 3

PHP のページネーションに PreviousNext のナビゲーション機能を追加する

最初のメソッドのコード例にいくつかのコードスニペットを追加して、ページネーションに PreviousNext のナビゲーション機能を提供できます。$page 変数を 1 ずつインクリメントおよびデクリメントして、前のページと次のページを指すようにすることができます。anchor タグのインクリメント変数とデクリメント変数を使用して、NextPrevious の機能を実現できます。

たとえば、$prev$next の 2つの変数を作成します。$page 変数を 1 で減算し、操作を $prev 変数に割り当てます。同様に、$page 変数に 1つ追加し、それを $next 変数に割り当てます。ページ番号の for ループの直前に、Previous という anchor タグをエコーし​​ます。anchor タグの href 属性に値 index.php?page=' . $prev . を割り当てます。同様に、href 属性の page の値として $next 変数を使用して、Next の別の anchor タグを作成します。

以下の出力セクションでは、2 ページ目が表示されます。Previous をクリックすると最初のページに移動し、Next をクリックすると 3 ページ目に移動します。

サンプルコード:

# php 7.x
<?php
$prev = $page -1;
$next = $page +1;
echo ' <a href="index.php?page=' . $prev . '"> Previous </a> ';
for ($page=1;$page<=$number_of_pages;$page++) {
    echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}
echo ' <a href="index.php?page=' . $next . '"> Next </a> ';
?>

出力:

3 C 
4 D 
Previous 1 2 3 Next
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn