国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ユーザーをページ分割するための PHP データベース操作

実際のプロジェクトでは、ホスト、ユーザー名、パスワード、ライブラリを構(gòu)成ファイルに記述します。

コード內(nèi)にハードに記述されている場(chǎng)合、データベースサーバーの関連情報(bào)が変更された場(chǎng)合、すべてのコードを変更するというプログラマーの考え方と明らかに一致しません。

さらに、データベースに接続する必要があるすべてのページで。接続を書いたり、エラーを判定したり、文字セットを設(shè)定したりする必要があり、とても面倒です。また、これらのコードを再利用することは有益ではありません。

目標(biāo)を達(dá)成するには、前述した一連の関數(shù)を使用できます。サンプル畫像は次のとおりです:

2015-10-13_561c9c5350f16.png

したがって、設(shè)定ファイル config.php を作成できます。定數(shù)として使用する必要があるすべての設(shè)定を設(shè)定します。コードは次のとおりです。

<?php
//數(shù)據(jù)庫服務(wù)器
define('DB_HOST', 'localhost');
//數(shù)據(jù)庫用戶名
define('DB_USER', 'root');
//數(shù)據(jù)庫密碼
define('DB_PWD', 'secret');
//庫名
define('DB_NAME', 'book');
//字符集
define('DB_CHARSET', 'utf8');
?>

將來データベースに接続する必要がある場(chǎng)合は、connection.php を含める必要があるだけです。ファイル。コードは次のとおりです:

<?phpinclude 'config.php';$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 ファイルを各ファイルに直接インクルードすることでデータベース接続を?qū)g裝できます:

include 'connection.php';

上記の準(zhǔn)備を完了してから、ページング。ページネーション効果は次のとおりです:

2015-10-13_561c9c536b206.png

ページには、ページングで次の基本要素が含まれている必要があります:


現(xiàn)在のページから 1 を引いたもの。 現(xiàn)在のページに1を追加します最後のページ 現(xiàn)在のページ番號(hào)ページ數(shù)
要素 説明 備考
のページにアクセスしてくださいthe begin 最初のページ get を使用してパラメータを渡す場(chǎng)合、デフォルトは 1 です。 前のページ
ページ番號(hào)が最初のページの場(chǎng)合は、1 を引いたものが最初のページになります次のページ
最後の場(chǎng)合最後のページ
アイテムの合計(jì)數(shù)をページあたりの表示數(shù)で割って、アイテムの合計(jì)數(shù)を取得しますページ現(xiàn)在のページ
は現(xiàn)在のページ番號(hào)です総ページ數(shù)
項(xiàng)目の合計(jì)數(shù)を1件あたりの表示數(shù)で割ったものページ

ページ番號(hào)を制御するときは、URL アドレス バーを介してページ番號(hào)の値を渡すことによってページ番號(hào)制御を?qū)g裝します。ページ番號(hào)に関する情報(bào)をpage.phpに追記することで、より有効な情報(bào)を算出することができます。ページングを制御する URL の効果は次のとおりです。

QQ截圖20161114161938.png

コード実裝では、ページングは??オフセット (offset) と制限後の數(shù)値 (num) によって実際に実現(xiàn)されます。

制限オフセット、番號(hào)

ページ110、 2 3n

      ページ番號(hào)URLの値を取得制限オフセット、數(shù)量
      ページ 2
      5,5ページ 3
      10,5ページ n
      (n-1)*5,5


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

      offset的值為 (n-1)*5
      num 為規(guī)定的5

      コードを通じてビジネスを?qū)g裝します:

      1. ページングに必要なパラメータを計(jì)算します

      総數(shù)

      通過查詢user表的count(id),得到總數(shù)$count。
      $count_sql = 'select count(id) as c from user';
      
      $result = mysqli_query($conn, $count_sql);
      
      $data = mysqli_fetch_assoc($result);
      
      //得到總的用戶數(shù)
      $count = $data['c'];

      現(xiàn)在のページ

      入力したばかりですpage.php ページの場(chǎng)合、URL は http://www.php.com/page.php で、その後に ?page=1 ページ識(shí)別番號(hào)はありません。

      そのため、ページ識(shí)別番號(hào)を手動(dòng)で作成し、それを現(xiàn)在のページ番號(hào)変數(shù) $page に渡す必要があります。

      ユーザーから渡されたページに小數(shù)點(diǎn)等が含まれている可能性があるため、強(qiáng)制的に型変換を行います: (int) $_GET['page']。

      最初の書き方:

      $page = isset($_GET['page']) ? (int) $_GET['page'] : 1;

      2 番目の書き方

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

      最後のページ

      各ページは整數(shù)でなければなりません。小學(xué)校の算數(shù)と同じです。平均して、5.6 人が何個(gè)のリンゴを準(zhǔn)備する必要があります。答えは 6 でなければなりません。

      ページに 20.3 ページが表示される場(chǎng)合は、丸め関數(shù) ceil を使用する必要があります。ページネーション數(shù)を21とします。

      合計(jì)數(shù)を各ページに表示されるデータ項(xiàng)目の數(shù)で割って、合計(jì)ページ數(shù)を取得します。

      //每頁顯示數(shù)
      $num = 5;
      $total = ceil($count / $num);

      前ページと次ページの例外制御

      ユーザーが最初のページで前のページをクリックし、最後のページで次のページをクリックした場(chǎng)合はどうなりますか?

      この場(chǎng)合、データが範(fàn)囲を超えるため、ページネーション時(shí)にデータが表示されなくなります。

      この異常な狀況を考慮する必要があるのは明らかです。したがって、ページング中に最初のページが 1 減算される場(chǎng)合は、それを最初のページとします。
      最終ページに追加した場(chǎng)合は、最終ページ、つまり例外制御が完了します。

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

      2. SQL ステートメント

      ページングの核心は SQL ステートメントの offset と num によって各ページの表示數(shù)を制御することであると前に述べました。

      また、上記の特定の式を次のようにコードに変換しました:

      $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 '<tr>
          <td colspan="5">
          <a href="page.php?page=1">首頁</a>
          <a href="page.php?page=' . ($page - 1) . '">上一頁</a>
          <a href="page.php?page=' . ($page + 1) . '">下一頁</a>
          <a href="page.php?page=' . $total . '">尾頁</a>
          當(dāng)前是第 ' . $page . '頁  共' . $total . '頁
          </td>
          </tr>';

      最後に、最終的な効果を達(dá)成するために、ビジネス全體が直列に接続されます。コードは次のとおりです。 學(xué)び続ける

      ||
      <?php $num = 5; $offset = ($page - 1) * $num; //我們將$num和$offset應(yīng)用于SQL語句中: $sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num"; //控制好URI中的分頁值 echo '<tr> <td colspan="5"> <a href="page.php?page=1">首頁</a> <a href="page.php?page=' . ($page - 1) . '">上一頁</a> <a href="page.php?page=' . ($page + 1) . '">下一頁</a> <a href="page.php?page=' . $total . '">尾頁</a> 當(dāng)前是第 ' . $page . '頁 共' . $total . '頁 </td> </tr>'; //我們最后將整體業(yè)務(wù)串聯(lián)起來實(shí)現(xiàn)最終效果,代碼如下: include 'connection.php'; $count_sql = 'select count(id) as c from user'; $result = mysqli_query($conn, $count_sql); $data = mysqli_fetch_assoc($result); //得到總的用戶數(shù) $count = $data['c']; $page = isset($_GET['page']) ? (int) $_GET['page'] : 1; /* if (isset($_GET['page'])) { $page = (int) $_GET['page']; } else { $page = 1; } */ //每頁顯示數(shù) $num = 5; //得到總頁數(shù) $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)) { //存在數(shù)據(jù)則循環(huán)將數(shù)據(jù)顯示出來 echo '<table width="800" border="1">'; while ($row = mysqli_fetch_assoc($result)) { echo '<tr>'; echo '<td>' . $row['username'] . '</td>'; echo '<td>' . date('Y-m-d H:i:s', $row['createtime']) . '</td>'; echo '<td>' . long2ip($row['createip']) . '</td>'; echo '<td><a href="edit.php?id=' . $row['id'] . '">編輯用戶</a></td>'; echo '<td><a href="delete.php?id=' . $row['id'] . '">刪除用戶</a></td>'; echo '</tr>'; } echo '<tr><td colspan="5"><a href="page.php?page=1">首頁</a> <a href="page.php?page=' . ($page - 1) . '">上一頁</a> <a href="page.php?page=' . ($page + 1) . '">下一頁</a> <a href="page.php?page=' . $total . '">尾頁</a> 當(dāng)前是第 ' . $page . '頁 共' . $total . '頁 </td></tr>'; echo '</table>'; } else { echo '沒有數(shù)據(jù)'; } mysqli_close($conn); ?>
      提出するリセットコード