前回の授業でニュース一覧の機能作成についてお話しましたが、前回の授業ではニュース一覧ページの下にページング機能を作りました!そこで今日はページング実装の制作過程をご紹介します!
まず、php ファイル page.php を作成します。このファイルには、ページングを作成するためのコードを記述します。
最初のステップ: 同様に、データベースに接続します。
// 显示所有的错误 error_reporting(E_ALL & ~E_NOTICE ); // 连接mysql数据库 $link = mysqli_connect('localhost','root', 'root'); if (!$link) { echo "connect mysql error!"; exit(); } // 选中数据库 news为数据库的名字 $db_selected = mysqli_select_db($link, 'news'); if (!$db_selected) { echo "<br>selected db error!"; exit(); } // 设置mysql字符集 为 utf8 $link->query("set names utf8");
第 2 ステップ: ページング関数を実装するには、どのリストのどのデータ テーブルをクエリする必要があります。ニュースをページングしているため、SQL ステートメントでニュース テーブルをチェックする必要があります
// 查询新闻表中的数据 $sql = "select * from new where 1 "; // 查询语句 $sql_count = "select count(*) as amount from new where 1 "; // 统计总记录数 $sql .= "order by id asc";
The次のステップは、レコードの総数を取得することです:
// 获取总记录条数 $result_amount = mysqli_query($link, $sql_count); $arr_amount = mysqli_fetch_array(mysqli_query($link, $sql_count), MYSQL_ASSOC); // 总记录条数 $amount = $arr_amount['amount'];
次に、総ページ数と総ページ番号を設定します
// 每页的记录条数 $page_size = 4; // 总页码 $max_page = ceil( $amount / $page_size );
ページングには数式アルゴリズムがあることは誰もが知っています。この式に基づいて前のページを計算します。ページ、次のページ、最後のページ!
// 获取当前页码 $page = intval($_GET['page']); // 获取page值,并转成int if( $page <= 0 || $page > $max_page){ // 如果page值小于0,或是大于最大页码 $page = 1; } // 上一页 $pre_page = $page -1; if( $pre_page < 1 ){ // 如果上一页小于1 $pre_page = 1; } // 下一页 $next_page = $page + 1; if( $next_page > $max_page ){ // 如果下一页大于最大页码 $next_page = $max_page; } // 分页计算, 计算分页的offset $offset = ($page - 1 ) * $page_size; $sql .= " limit $offset, $page_size ";
この時点でページング コードは完了です。次に、このページング ファイルをニュース リスト ページに導入します
<?php include_once "../common/page.php"; ?>
最後に、ニュース リスト ページの下のページング位置を見つけて、ページングを出力します
そうだね##OK!ページネーションが完了しました! 注: 私の場合は少し面倒かもしれません。Web サイトからページング クラスをダウンロードして直接呼び出すこともできます。ただし、ページング実装の原則を知っておく必要があります~