一、封裝設定資訊
1、我們可以做一個設定檔config.php。將需要使用到的配置全部設定為常數,程式碼如下:
2、2.我們將connection.php頁面抽取出來,以後需要連接資料庫的時候只需要包含connection.php檔案即可。
程式碼如下:
我們在以後每個檔案使用中直接包含connection.php檔案就可以實作資料庫連線了:
include 'connection.php';二、顯示分頁實作
頁要實現分頁中包含以下幾個基本元素:
我們在控制頁碼的時候,都是透過URL網址列傳入頁碼值來實現的頁碼控制。在page.php後面接上頁碼的相關訊息,我們就能夠算出更多的有效資訊。 url控制分頁的效果如下:
在程式碼實作中,是透過limit後的偏移量(offset)和數量(num),這兩個值真正實現的分頁。
limit offset , num假設每頁顯示5條。最終得到的分頁中控制limit公式如下:
offset的值为 (n-1)*5 num 为规定的5三、實作步驟;
##1、計算出分頁所需參數
1-1、總數
通过查询user表的count(id),得到总数$count。 $count_sql = 'select count(id) as c from user'; $result = mysqli_query($conn, $count_sql); $data = mysqli_fetch_assoc($result); //得到总的用户数 $count = $data['c'];1-2、目前頁剛進入page.php頁時,url為http://www.php.com/page.php,後面是不存在?page=1 頁面識別號碼的。 因此我們需要手動建立一個頁面識別號碼傳給目前頁碼變數$page。 我們害怕使用者傳送的頁面中存在小數等,所以我們做一次強制的型別轉換:(int) $_GET['page']。 第一種寫法:
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;第二種寫法:
if (isset($_GET['page'])) { $page = (int) $_GET['page']; } else { $page = 1; }1-3、最後一頁每一頁一定是整數。就跟小學的時候數學一樣。平均有5.6個人應該準備幾顆蘋果。答案一定是6個。 如果頁面出來了20.3個頁面,一定是用進一法取整函數ceil。讓分頁數變成21。 我們用總數除以每頁顯示的資料條數,就得到了總頁數了。
//每页显示数 $num = 5; $total = ceil($count / $num);1-4、上一頁異常情況控制如果用戶的在第一頁點擊了上一頁,在最後一頁點擊了下一頁怎麼辦呢? 這樣的話數據會超出範圍,而造成我們分頁時無數據顯示。 顯然這種異常情況需要考慮到。因此,如果在分頁時在第一頁減一時,我們就讓他為第一頁。
在最後一頁加一時,我們就讓他為最後一頁,即完成了異常控制。
if ($page <= 1) { $page = 1; } if ($page >= $total) { $page = $total; }2、SQL語句
我們之前說過分頁的核心是透過SQL語句中的offset和num來控制每頁顯示數。$num = 5; $offset = ($page - 1) * $num;我們將$num和$offset應用於SQL語句中:$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";#控制好URI中的分頁值echo ''; 首页 上一页 下一页 尾页 当前是第 ' . $page . '页 共' . $total . '页 四、整體程式碼實作
include 'connection.php'; $count_sql = 'select count(id) as c from user'; $result = mysqli_query($conn, $count_sql); $data = mysqli_fetch_assoc($result); //得到总的用户数 $count = $data['c']; $page = isset($_GET['page']) ? (int) $_GET['page'] : 1; /* if (isset($_GET['page'])) { $page = (int) $_GET['page']; } else { $page = 1; } */ //每页显示数 $num = 5; //得到总页数 $total = ceil($count / $num); if ($page <= 1) { $page = 1; } if ($page >= $total) { $page = $total; } $offset = ($page - 1) * $num; $sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num"; $result = mysqli_query($conn, $sql); if ($result && mysqli_num_rows($result)) { //存在数据则循环将数据显示出来 echo '
' . $row['username'] . ' | '; echo '' . date('Y-m-d H:i:s', $row['createtime']) . ' | '; echo '' . long2ip($row['createip']) . ' | '; echo '编辑用户 | '; echo '删除用户 | '; echo '
首页 上一页 下一页 尾页 当前是第 ' . $page . '页 共' . $total . '页 |
以上內容可實現了簡單的分頁功能,相了解更多相關內容請造訪PHP中文網:PHP影片教學
以上是php實作分頁的原理與步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!