喵喵笨兔 の 喵喵的家~遊戲天地 - 首頁(上版面)
000webhost logo
喵喵笨兔 の 喵喵的家~遊戲天地 - 首頁(左版面)
首  頁 最新消息 遊戲攻略 遊戲影片 遊戲圖片 下載區 學習分享 留言板 FB粉絲團
 喵喵笨兔 の 喵喵的家~遊戲天地 - PHP 網頁讀取 MySQL 資料庫資料,進行分頁顯示(1):基本分頁 (Pagination)

PHP 網頁讀取 MySQL 資料庫資料,進行分頁顯示 (1) : 基本分頁 (Pagination)

PHP 網頁讀取 MySQL 資料庫資料進行分頁顯示

 網頁讀取 MySQL 資料庫資料後,讓資料一頁一頁地分頁顯示如下圖:


 以下為笨兔土法煉鋼,東找西拼寫出的程式碼,或許有些語法令人堪疑,不過笨兔主要以達到分頁及相關設置為主。對資料分頁相關設計有興趣者,不妨參考一下唄!

 若不想自己寫,可用 Bootstrap Table 比較方便,相關用法可參考笨兔的隨手筆記:

範例程式碼:直接以程式碼來說明唄!主要為紅色字部份

 以笨兔網站的 MySQL 資料庫,撈取【學習分享】的資料來做展示,範例設定的 MySQL 相關名稱如下。MySQL 連線部份,可參考笨兔另一篇隨手筆記【db_002】PHP 連接 MySQL 資料庫

  • 伺服器名稱: localhost
  • 使用者帳號: root
  • 使用者密碼: 12345678
  • 資料庫名稱: pcgame
  • 資料表名稱: learn
  • 資料表欄位名稱: l_id、l_date、l_sort、l_number、l_description、l_url 共有6個欄位
<?php
  $dbhost = 'localhost'; 
  $dbuser = 'root';
  $dbpass = '12345678';
  $dbname = 'pcgame';
  $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connect') ; 
  mysql_query("SET NAMES 'UTF8'"); 
  mysql_select_db($dbname);

  $sql = 'SELECT * FROM learn';
  $result = mysql_query($sql) or die('MySQL query error');

  //分頁設定
  $per_total = mysql_num_rows($result);  //計算總筆數
  $per = 10;  //每頁筆數
  $pages = ceil($per_total/$per);  //計算總頁數;ceil(x)取>=x的整數,也就是小數無條件進1法

  if(!isset($_GET['page'])){  //!isset 判斷有沒有$_GET['page']這個變數
  	  $page = 1;	  
  }else{
	  $page = $_GET['page'];
  }

  $start = ($page-1)*$per;  //每一頁開始的資料序號(資料庫序號是從0開始)
  $result = mysql_query($sql.' LIMIT '.$start.', '.$per) or die('MySQL query error'); //讀取選取頁的資料

  $page_start = $start +1;  //選取頁的起始筆數
  $page_end = $start + $per;  //選取頁的最後筆數
  if($page_end>$per_total){  //最後頁的最後筆數=總筆數
	 $page_end = $per_total;
  }
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>喵喵笨兔 ~ PHP 網頁讀取 MySQL 資料庫資料進行分頁顯示</title>
<link href="css/bootstrap-4.0.0-beta 2.min.css" rel="stylesheet">
<script src="js/bootstrap-4.0.0-beta 2.min.js"></script>
</head>

<body>
<h3 align="center"><code>喵喵笨兔 ~ PHP 網頁讀取 MySQL 資料庫資料進行分頁顯示</code></h3>	
<div>
<table class="table table-sm">
<thead>
<tr>
<th>分享日期</th>
<th>分類</th>
<th>編號</th>
<th>內容說明</th>
</tr>
</thead>
<tbody>
<?php while($row=mysql_fetch_assoc($result)){ //讀取資料到表格內?>
<tr>
<td><?php echo $row['l_date'] ?></td>
<td><?php echo $row['l_sort'] ?></td>
<td><?php echo $row['l_number'] ?></td>
<td><?php echo $row['l_description'] ?></td>
</tr>
<? } ?>

</tbody>
</table>
</div> <div class="row">
<div class="col-md-6" align="center">
<?php
//每頁顯示筆數明細
echo '顯示 '.$page_start.' 到 '.$page_end.' 筆 共 '.$per_total.' 筆,目前在第 '.$page.' 頁 共 '.$pages.' 頁';
?>

</div> <div class="col-md-6" align="center">
<?php if($pages>1){ //總頁數>1才顯示分頁選單
//分頁頁碼;在第一頁時,該頁就不超連結,可連結就送出$_GET['page']
if($page=='1'){
echo "首頁 ";
echo "上一頁 ";
}else{
echo "<a href=?page=1>首頁 </a> ";
echo "<a href=?page=".($page-1).">上一頁 </a> ";
} //中央分頁部份,處於該頁就不超連結,可連結就送出$_GET['page]
//其中$page-3 和+3是最多出現3+3-1=5個分頁頁籤,若改-4和+5,則為4+5-1=8,以此類推
for( $i=1 ; $i<=$pages ; $i++ ) {
if ( $page-3 < $i && $i < $page+3 ) {
if($i==$page){
echo $i." ";
}else{
echo "<a href=?page=".$i.">".$i."</a> ";
}
}
} //在最後頁時,該頁就不超連結,可連結就送出$_GET['page']
if($page==$pages){
echo " 下一頁";
echo " 末頁";
}else{
echo "<a href=?page=".($page+1)."> 下一頁</a>";
echo "<a href=?page=".$pages."> 末頁</a>";
} }
?>

</div>
</div> </body>
</html>

【點擊看範例結果】


分頁顯示相關應用,可參考笨兔其它隨手筆記:

  1. 【html_036】PHP 網頁讀取 MySQL 資料庫資料分頁顯示(2):bootstrap 美化分頁頁籤及前往指定頁
  2. 【html_037】PHP 網頁讀取 MySQL 資料庫資料分頁顯示(3):設定資料分頁每頁顯示筆數 & 搜尋功能
  3. 【html_039】PHP 網頁讀取 MySQL 資料庫資料分頁顯示(4):SORT 排序功能 - 隨時選任一欄位來做升序、降序排列的功能
笨兔隨手筆記於 2017/11/27

喵喵笨兔 の 喵喵的家~遊戲天地
http://vv0817.tk
http://vvv.myweb.hinet.net