ニュース開発ページング機能LOGIN

ニュース開発ページング機能

ページングは​​ほぼすべての Web サイトで使用される機能です。コンテンツが多くてページングが使用されない場合、ページの表示が非常に長くなり、使用するのも見つけるのも非常に面倒になるため、これについて非常に実用的なものについて説明します。関数。

ページングの一般的な考え方:

ページングは​​、データベース内のすべての情報を一定の数でいくつかのセグメントに分割することです。そのため、ここでは 2 つのデータが必要です:

各ページに表示される情報項目の数 $limitPage

現在のページング数を取得 $Page


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

1ページあたりの表示数を5に設定した場合、$limitPage = 5、

次に最初のページ $page = 1 は 0, 1, 2 , 3 , 4 の 3 つのレコードを表示します

2 番目のページ $page = 2 は 5 , 6 , 7 , 8 , 9 , 10 を表示します 3 つのレコード

3 番目のページ $page = 3 は、11、12、13、14、15 の 3 つのレコード

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

データの読み取りを開始するパラメータ $limitFrom を設定します

上記のルールから、次のことが得られます:

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

それぞれ 0 番目と 5 番目から開始されます, 11件のデータ取得が開始されます。


次のステップは、データベースに接続してニュース項目の総数をカウントすることです:

<?php
$link = mysqli_connect('localhost','uesrname','password','news');
$sql = "select * from new";  //  select * from表示获取全部字段的值
$sqlCount = "select count(*) from new";    //count(*)是计算数据总的条数
$retQuery = mysqli_query($link, $sqlCount);  //查询数量sql语句
$retCount = mysqli_fetch_array($retQuery);   //获取数量
$count = $retCount[0]?$retCount[0]:0;   //判断获取的新闻数量
$countNews = $count;
?>

次に、変数 $countPage を与えて、合計で表示されるページ数を示します

これは久しぶりの状況です。情報が 100 個ある場合、各ページに 11 個が表示されているとします。残りの 1 個をどう処理するか、

その後、% を使用して残りを判断する必要があります。

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

その他のパラメータ 前ページ $prev、次ページ $next;

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

の考え方についてお話します。最初に PHP コード関数を実装します。

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

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

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

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

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

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

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

りー


<?php $link = mysqli_connect('localhost','usermane','password','test'); mysqli_set_charset($link, "utf8"); if (!$link) { die("连接失败:".mysqli_connect_error()); } $page = isset($_GET['page'])?$_GET['page']:1;//获取当前分页数 $limitNews = 5; //每页显示新闻数量 $countNews = ""; //总共有多少条新闻 $countPage = ""; //一共有多少页数 $limitFrom = ($page - 1) * $limitPage;//从第几条数据开始读记录 //每页显示5个 //page = l limit 0 //page = 2 limit 5 //page = 3 limit 11 $sql = "select * from new"; $sqlCount = "select count(*) from new"; $retQuery = mysqli_query($link, $sqlCount); //查询数量sql语句 $retCount = mysqli_fetch_array($retQuery); //获取数量 $count = $retCount[0]?$retCount[0]:0; //判断获取的新闻数量 $countNews = $count; $countPage = $countNews%$limitPage; //求余数获取分页数量能否被除尽 if(($countPage) > 0) { //获取的页数有余 $countPage = ceil($countNews/$limitPage); // ceil() 函数向上舍入为最接近的整数,除不尽则取整数+1页, 100个新闻每个页面显示11个,成9个页面,剩余1个成1个页面 } else { $countPage = $countNews/$limitPage; } $prev = ($page - 1 <= 0 )?1:$page-1; //上一页 $next = ($page + 1 > $countPage)?$countPage:$page+1; //下一页 $result = mysqli_query($link, $sql); ?> <!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>
コースウェア