PHP ページ付け

Subodh Poudel 2023年1月30日
  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
著者: 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