PHP開発記事公開システムページングプログラム
ページングプログラム
ページングの主な原理を次の図に示します:
注意事項(xiàng): 各ページに表示するデータ項(xiàng)目の數(shù)を事前に定義します (データが 3 個(gè)であると仮定します) 1 ページに)、データベースに従ってデータの合計(jì)數(shù)を計(jì)算し、出力ページのデータベース クエリ ステートメントの制限キーワードを使用します。最初のページは 0 番目から始まる 3 個(gè)のデータです。 2ページ目は3番目のデータから始まり、nページ目は(n-1)*3個(gè)のデータから始まる3個(gè)のデータになります
以上で原理が分かりました。実際のプログラムを見てみましょう。プログラム內(nèi)のコメントは非常に明確で、一行ずつ観察することができます
<?php //分頁功能 //連接數(shù)據(jù)庫 require_once("connect.php"); $page = isset($_GET['page'])?intval($_GET['page']):1;//設(shè)置當(dāng)前頁數(shù),沒有則設(shè)置為1 $num=3;//每頁顯示3條數(shù)據(jù) /* 首先我們要獲取數(shù)據(jù)庫中到底有多少數(shù)據(jù),才能判斷具體要分多少頁,總頁數(shù) 具體的公式就是 總數(shù)據(jù)數(shù) 除以 每頁顯示的條數(shù),有余進(jìn)一 。 也就是說10/3=3.3333=4 有余數(shù)就要進(jìn)一。 */ $sql="select * from article"; $result=mysqli_query($conn,$sql); $total=mysqli_num_rows($result);//查詢數(shù)據(jù)的總條數(shù) $pagenum=ceil($total/$num);//獲得總頁數(shù) //假如傳入的頁數(shù)參數(shù)page 大于總頁數(shù) pagenum,則顯示錯(cuò)誤信息 if($page>$pagenum || $page == 0){ echo "<script>alert('沒有內(nèi)容了');history.go(-1);</script>"; exit; } $offset=($page-1)*$num; /* 獲取limit的第一個(gè)參數(shù)的值 offset ,假如第一頁則為(1-1)*10=0,第二頁為(2-1)*10=10。 (傳入的頁數(shù)-1) * 每頁的數(shù)據(jù) 得到limit第一個(gè)參數(shù)的值*/ $sql="select * from article limit $offset,$num "; $info=mysqli_query($conn,$sql); //獲取相應(yīng)頁數(shù)所需要顯示的數(shù)據(jù) //獲取最新添加的前六條數(shù)據(jù) $sql_new="select id,title from article order by dateline desc limit 0,6 "; $info_title=mysqli_query($conn,$sql_new); ?>
。