共計 3319 個字符,預計需要花費 9 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要介紹 PHP + MySQL 實現數據分頁顯示的示例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
php 有什么特點
1、執行速度快。2、具有很好的開放性和可擴展性。3、PHP 支持多種主流與非主流的數據庫。4、面向對象編程:PHP 提供了類和對象。5、版本更新速度快。6、具有豐富的功能。7、可伸縮性。8、功能全面,包括圖形處理、編碼與解碼、壓縮文件處理、xml 解析等。
一、連接數據庫
$connect = mysqli_connect(localhost , 用戶名 , 密碼 , 數據庫名) or die(數據庫連接失敗 mysqli_set_charset($connect, utf8
二、構建 SQL 語句
分頁其實利用的是 MySQL 中 limit 關鍵字來實現的,例如我們查詢一個表中的前兩條數據:
select * from student limit 0, 2
limit 后需要兩個參數,第一個參數代表從第幾條開始取;第二個參數代表一次取幾條。
那么上述 SQL 語句表達的意思為從第 0 條開始取,取 2 條(實則 0 為第 1 條,計數從 0 開始)。
我們把取到的前兩條數據作為第一頁。
那么繼續取第二頁,還是 2 條數據,則 SQL 語句為:
select * from student limit 2, 2
第三頁:
select * from student limit 4, 2
以此類推,我們發現每頁始終是兩條,所以 limit 的第二個參數(即 2)已經確定好了,那么第一個參數該如何確定呢?其實其中的規律如下:
第 1 頁:0,2(第 1 頁從 0 的位置取,取 2 條,即 0 1)
第 2 頁:2,2(第 2 頁從 2 的位置取,取 2 條,即 2 3)
第 3 頁:4,2(第 3 頁從 4 的位置取,取 2 條,即 4 5)
第 4 頁:6,2(第 4 頁從 6 的位置取,取 2 條,即 6 7)
……
所以每頁的起始位置 = (當前頁 – 1) * 每頁顯示的條數
第 1 頁:(1 – 1) * 2 = 0
第 2 頁:(2 – 1) * 2 = 2
第 3 頁:(3 – 1) * 2 = 4
……
三、定義每頁顯示的條數
$pageSize = 2;
四、定義當前頁
$page = 1;
五、根據公式計算 limit 需要的第一個參數
$start = ($page - 1) * $pageSize;
所以 SQL 語句為:
select * from student limit $start, $pageSize;
這時改變 $page 的值,就可以查詢對應頁的數據。
六、通過地址欄傳參得到 $page 參數來定義當前頁
為了更加的靈活我們通過地址欄傳參得到想要顯示的頁數,所以第四步的代碼改為:
if ($_GET[ page]) {$page = $_GET[ page} else {$page = 1;
// 接收不到按照 1 處理,即默認第 1 頁 }
七、通過按鈕控制上下頁切換
將 SQL 語句執行:
$sql = select * from student limit $start, $pageSize $query = mysqli_query($connect, $sql);$result = mysqli_fetch_all($query, MYSQLI_ASSOC);
將結果輸出到 HTML 表格:
table border= 1 cellspacing= 0 cellpadding= 0 > 增加上下頁按鈕:
button 上一頁 /button button 下一頁 /button
當點擊上一頁,我們需要給當前頁 $page - 1;
當點擊下一頁,我們需要給當前頁 $page + 1;
在當前頁的基礎上確定上一頁:
$up = $page - 1;
假設當前頁為第 2 頁,那么 $up 則為 2 - 1 = 1,即上一頁是第 1 頁。
在當前頁的基礎上確定下一頁:
$next = $page + 1;
假設當前頁為第 2 頁,那么 $next 則為 2 + 1 = 3,即下一頁是第 3 頁。
所以我們給按鈕加一個超鏈接,鏈接到當前頁,并攜帶一個 page 參數,值為相應的頁數。
a href= form-7.php
?page= ?php echo $up; ? button 上一頁 /button /a a href= form-7.php
?page= ?php echo $next; ? button 下一頁 /button /a
但是 $up 和 $next 并不是無限加減的,當已經是第一頁的時候,$up 不可再繼續減,所以在確定上一頁的時候需要加一個判斷。
if ($page == 1) {$up = 1;} else {$up = $page - 1;
}
同理,確定下一頁的時候也需要判斷,什么時候不可以繼續下一頁了呢?當當前頁已經是最后一頁的時候不可繼續下一頁,最后一頁如何判定,取決于當前表的總條數,當前表如果有 10 條數據,每頁顯示 2 條,那么需要分 10 / 2 = 5 頁,這個 5 就是最后一頁,如果有 11 條數據,那么需要分 11 / 2 = 5.5 頁,說明分 5 頁還剩下 1 條,所以直接分 6 頁,即向上取整,那么這個 6 就是最后一頁。
求出總條數:
$sql = select * from student $query = mysqli_query($connect, $sql);$num = mysqli_num_rows($query);
根據總條數和每頁顯示的條數求出需要分幾頁:
$totalPage = ceil($num / $pageSize);
所以在判斷下一頁的時候改為:
if ($page == $totalPage) {$next = $totalPage;} else {$next = $page + 1;
}
八、完整代碼
form-7.php
?php// 連接數據庫$connect = mysqli_connect(localhost , 用戶名 , 密碼 , 數據庫名) or die(數據庫連接失敗 mysqli_set_charset($connect, utf8
// 查詢總條數 $sql = select * from student $query = mysqli_query($connect, $sql);// 返回結果集中行的數量 $num = mysqli_num_rows($query);// 定義每頁顯示幾條$pageSize = 2;
// 一共分幾頁$totalPage = ceil($num / $pageSize);
// 獲取當前頁 if ($_GET[ page]) {
$page = $_GET[page} else {
$page = 1;
}// 在當前頁的基礎上確定上一頁 if ($page == 1) {
$up = 1;} else {
$up = $page - 1;
}// 在當前頁的基礎上確定下一頁 if ($page == $totalPage) {
$next = $totalPage;} else {
$next = $page + 1;
}// 求出 limit 的第一個參數$start = ($page - 1) * $pageSize;
$sql = select * from student limit $start, $pageSize $res = mysqli_query($connect, $sql);$result = mysqli_fetch_all($res, MYSQLI_ASSOC);? !doctype html html lang= en
head
meta charset= UTF-8
meta name= Generator content= EditPlus?
meta name= Author content=
meta name= Keywords content=
meta name= Description content=
title Document /title
/head
body
table border= 1 cellspacing= 0 cellpadding= 0 >以上是“PHP + MySQL 實現數據分頁顯示的示例”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!
向 AI 問一下細節