ページング機能の実装方法LOGIN

ページング機能の実装方法

前の章で、背景コンテンツ表示 HTML ページの変更は完了しましたが、ここでは SQL ステートメントを通じてデータベース データをクエリし、テーブルに表示する必要があります。 ここではページング機能を使って表示していますが、やはり最初のページに表示される数は限られています。

いわゆるページング表示とは、データベース内の結果セットが表示のために人為的にセクションに分割されることを意味します。ここでは 2 つの初期パラメータが必要です:

ページあたりの表示数: $limitNews

現在のページ数を取得します: $page

コンピューター言語はデフォルトで 0 からレコードの取得を開始するため

ページごとに表示される数が 3 に設定されている場合、$limitNews = 3,

#最初のページ $page = 1 には、0、1、2

## の 3 つのレコードが表示されます。 #2 番目のページ $page = 2 は 3 つのレコード 3、4、5

3 番目のページ $page = 3 は 3 つのレコード 6、7、8

を表示します。 。 。 。 。 。 。 。 。

どのデータ部分から読み取りを開始するかというパラメーター $limitFrom を設定します。

上記のルールから取得できます:

$limitFrom = ($page - 1) * $limitNews;

とすると、それぞれ0番目、3番目、6番目の項目からデータの取得が開始されます。

クエリ ステートメントを通じてデータベース テーブル内のニュースの総数を取得します $countNews

<?php
$retQuery = mysqli_query($link, $sqlCount);  //查询数量sql语句
$retCount = mysqli_fetch_array($retQuery);   //获取数量
$count = $retCount[0]?$retCount[0]:0;   //判断获取的新闻数量
$countNews = $count;
?>

ここで別のパラメーターを指定する必要があります $countPage 合計で表示されるページ数


今度は、別の質問が生じます。ニュース レコードが 10 件あり、各ページに 3 つのレコードが表示されている場合、残りの 1 つはどうなりますか?

判断するには % 残りを使用する必要があります:

<?php
$countPage = $countNews%$limitNews;   //求余数获取分页数量能否被除尽
if(($countPage) > 0) {  //获取的页数有余
  $countPage = ceil($countNews/$limitNews);  
  
// ceil() 函数向上舍入为最接近的整数,除不尽则取整数+1页, 10个新闻每个页面显示3个,成3个页面,剩余1个单独成1个页面,这样总共有4个页面
} else {
  $countPage = $countNews/$limitNews;  //如果是9个新闻每个页面显示3个,成3个页面
}
?>

他のパラメータは、前のページの $prev と次のページの $next です。


ページング機能では、ジャンプするために「前のページ」と「次のページ」をクリックすることがよくあります。

まず、PHP コード関数を実装するアイデアについて話しましょう:

Previous page$ prev は現在のページです $page -1 は、前のページに段階的にジャンプします。現在のページ $page が最初のページの場合、前にジャンプするとページ 0 になります。これは明らかにバグを引き起こします。

ここでは、現在のページ $page が最初のページの場合、「前のページ」をクリックすると最初のページとして表示され、前にジャンプしなくなります。

<?php
  $prev = ($page - 1 <= 0 )?1:$page-1;
?>

次のページ $next は現在のページ $page -1 で、段階的に次のページにジャンプします。問題は、$page が最後のページの場合、[次のページ] をクリックして戻ることです。 . ,

前ページと同様に、最後のページを表示するように設定します。

<?php
  $next = ($page + 1 > $countPage)?$countPage:$page+1;
?>

//現在のページ番号が総ページ番号より大きい場合、現在のページが表示されます。

<!DOCTYPE html>
<html>
<head>  
<meta charset=utf8">  
<title>分表页</title>
</head>
<body>
   <div>
         <a href="?page=<?php echo $prev;?>">|上一页</a>         
         <?php for($i=1; $i<=$countPage; $i++):?>         
         <a href="?page=<?php echo $i;?>"><?php echo $i;?></a>         
         <?php endfor;?>         
         <a href="?page=<?php echo $next;?>">|下一页</a>
   </div>
</body>
</html>

友人は、データベース

リスト

テーブルにいくつかのテスト データを追加して、ページング機能をテストできます。 while ステートメントを使用して、データベース内のデータをループアウトし、list.php ファイルに表示します。

<?php while($rows=mysqli_fetch_array($result)):?>
<tr>
  <td style="text-align:left; padding-left:20px;">
  <input type="checkbox" name="id[]" value="<?php echo $rows["id"]?>" />
  <?php echo $rows["id"]?></td>
  <td><input type="text" name="sort[1]" value="1" style="width:50px; text-align:center; border:1px solid #ddd; padding:7px 0;" /></td>
  <td width="10%">
      <video width="200" height="150" controls="controls" >
          <source src="<?php echo $rows["video"]?>" type="video/mp4">
      </video>
  </td>
  <td><?php echo $rows["title"]?></td>
  <td><font color="#00CC99">首页</font></td>
  <td><?php echo $rows["cate_name"]?></td>
  <td><?php echo date("Y-m-d H:i:s",$rows["time"])?></td>
  <td>
      <div class="button-group">
          <a class="button border-main" href="#"><span class="icon-edit"></span>修 改</a>
          <a class="button border-red" href="#" onclick="return del(1,1,1)">
              <span class="icon-trash-o"></span>删 除
          </a>
      </div>
  </td>
</tr>
<?php endwhile;?>

注: ここでは、date 関数を使用してタイムスタンプを変換しています。通常の加算時間として表示されます。

rreeee

次のセクション
<!DOCTYPE html> <html> <head> <meta charset=utf8"> <title>分表页</title> </head> <body> <div> <a href="?page=<?php echo $prev;?>">|上一页</a> <?php for($i=1; $i<=$countPage; $i++):?> <a href="?page=<?php echo $i;?>"><?php echo $i;?></a> <?php endfor;?> <a href="?page=<?php echo $next;?>">|下一页</a> </div> </body> </html>
コースウェア