PHP MySQL實現簡單的分頁功能

2021-08-30 11:11:51 字數 3412 閱讀 3134

今天對之前的使用者管理模組實現了乙個簡單的分頁功能,大致樣式如下:

接下來談談具體實現的步驟:

1、既然涉及到分頁,首先肯定是從資料庫獲取的資料就有限制,這個限制就是用limit,比如下面這個sql語句:

$sql="select * from users order by id desc limit 0,3";其意思為:從使用者表(users)中按降序排列取出從位置0開始的3條資料,即我按照每頁3條資料劃分;

2、因為每一頁的資料都是不同的,而這個模組始終是使用者管理模組,其位址列不能有大的變化,面對成千上萬的頁碼,也不可能變化這麼多位址,比如我的位址列:http://localhost/project/interview_practice/20181017/2018101701/adminuser.php,這個基本上是固定的,所以就需要在上面加引數,比如加個引數p,後面數字表示第幾頁:http://localhost/project/interview_practice/20181017/2018101701/adminuser.php?p=3;

3、以上兩條是需要知道的基本條件,先從簡單的入手,實現首頁:

首頁
上面的位址adminuser.php?p=1是從登入介面跳轉過來的位址,首頁就這樣完成了!

4、接下來實現末頁,先思考乙個問題,末頁是多少頁,怎麼計算出來?這裡就需要用到資料總行數了,先獲取資料總行數:

//獲取總的數量

$sqltot = "select count(*) as columns from users";

$smttot = $pdo->query($sqltot);

$rowstot = $smttot->fetchall(pdo::fetch_assoc);

$tot = $rowstot[0]['columns'];

$tot就是獲取到的總行數,也可以用第二種方法獲取到:

$smttot = $pdo->prepare($sqltot);

$smttot->execute();

$tot=$smttot->fetchcolumn();

而每頁有3條資料,用ceil()函式進行向上取整獲取最後一頁的頁碼:

//每頁條數

$length = 3;

$lastpage = ceil($tot/$length);//ceil向上取整

' class='btn btn-info'>末頁
$sql="select * from users order by id desc limit ,";
$offset表示當前頁數和頁麵條數的關係:

$offset = ($page-1) * $length;
而當前頁面$page可以通過$_get獲取:

$page = $_get['p'];
$nextpage = $page+1;
$prepage = $page-1;
//當前頁數

$page = $_get['p'];

if($page>=$lastpage)

$nextpage = $page+1;

if($nextpage>=$lastpage)

$prepage = $page-1;

if($prepage<=1)

7、實現跳轉的功能

跳轉至 頁

go

用jquery實現:

//頁面跳轉

$('#b1').click(function()elseelse

}});

這裡需要注意兩個地方:一是!val的判斷,如果輸入值為空,為避免後端出現問題,需要加這個判斷,關於!val的用法可以參考這篇文章

二是需要對輸入的字串進行判斷,輸入數字的時候才會跳轉!用到了正則匹配。

8、所有功能都實現了,**如下,都是php+html混編:

返回首頁

退出登入

<?php

require_once('connectdb.php');

//末頁

$sqltot = "select count(*) as columns from users"; //獲取總的數量

//方法一

$smttot = $pdo->query($sqltot);

$rowstot = $smttot->fetchall(pdo::fetch_assoc);

$tot = $rowstot[0]['columns'];

//每頁條數

$length = 3;

$lastpage = ceil($tot/$length);//ceil向上取整

//echo $lastpage;

//當前頁數

$page = $_get['p'];

if($page>=$lastpage)

$nextpage = $page+1;

if($nextpage>=$lastpage)

$prepage = $page-1;

if($prepage<=1)

$offset = ($page-1) * $length;

//求每頁的資料

$sql="select * from users order by id desc limit ,";

$smt=$pdo->query($sql);

$rows=$smt->fetchall(pdo::fetch_assoc);

echo "";

echo "";

echo "使用者id";

echo "使用者名稱";

echo "郵箱";

echo "手機號";

echo "操作";

echo "";

foreach($rows as $row)'

echo "";

}echo "";

?>

當前第<?php if($_get['p']>=$lastpage);echo $_get['p'];?>頁

首頁' class='btn btn-info'>末頁

<?php if($_get['p']>=$lastpage);echo $_get['p'].'/'.$lastpage;?>

跳轉至 頁

go

PHP mysql分頁原理實現

編碼寄語 化繁為簡,則豁然開朗。執行截圖 關鍵步驟 建立資料庫 create table page id int 10 not null auto increment,name varchar 10 default null,primary key id 傳入頁碼 使用get方法 page get ...

基於php mysql實現分頁技術

1.傳入頁碼 page get p url中傳入的值 p 1 2 3.2.傳入分頁資料 host localhost 3307 username root password db test pre page 1 10 pagesize 10 showpage 5 conn mysql connect...

PHP MySQL分頁的優化

今天在本機布置 的時候,發現後台有乙個功能的分頁特別的慢,要十多秒才能開啟。本身機器也有一點慢,但是才1000多條資料就慢的不得了,以後怎麼辦。分頁的那個sql語句太複雜,有條件,有外鏈結,有排序,非常的慢,上網查了幾種優化方式。最後對 進行了優化,之後2秒就可以開啟了。sql stringx se...