php写带分页的留言板,php中分页程序之基于留言板详解_PHP教程
文章是重點(diǎn)是講php中的分頁(yè)原理,同時(shí)我們是利用一個(gè)實(shí)現(xiàn)來講解如何在php中實(shí)現(xiàn)分頁(yè),這個(gè)就是基于自己寫的留方板程序了,有需要的朋友可以參考一下,很適合于初學(xué)者哦。
分頁(yè)的關(guān)鍵問題其實(shí)在于Mysql的一個(gè)關(guān)鍵字limite這個(gè)關(guān)鍵字后邊跟的兩個(gè)數(shù)字,第一個(gè)是需要記錄的開始行數(shù),第二個(gè)數(shù)字是從這個(gè)開始行數(shù)后取得幾行記錄——這一點(diǎn)大家不要誤以為是從第幾行開始到第幾行結(jié)束,相差很遠(yuǎn)的。
看看我們index.php的第19行:
代碼如下
復(fù)制代碼
$recordSql = $sql. ” LIMIT “.$page*$pagesize.”,”.$pagesize;
其中變量$page的判斷在程序的第8行和第9行得到的:
代碼如下
復(fù)制代碼
if(isset($_GET[‘page’])&&$_GET[‘page’]!=”) $page=$_GET[‘page’];
else $page=0;
當(dāng)然大家也看到了$_GET[‘page’]變量這個(gè)下文會(huì)說到。
變量$pagesize我們?cè)诘?行自己定義的,也就是每頁(yè)顯示多少條記錄,我們定義的是10條。當(dāng)變量$page=0的時(shí)候我們語句最終會(huì)是這樣的:
代碼如下
復(fù)制代碼
$recordSql = “SELECT a . * , b.name, b.email, b.qq, c.revert_time, c.revert
FROM post a
LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b
WHERE a.guest_id = b.id
ORDER BY a.id DESC
” LIMIT 0,10″;
就是從0條記錄開始取得10個(gè)記錄結(jié)果——這個(gè)是包括第0條記錄的;
當(dāng)$page=1的時(shí)候呢?可想而知了——這個(gè)時(shí)候$page*$pagesize=10,當(dāng)然是從……不說了,再說就羅嗦了。
還有需要說的是,為什么我們要在取得總行數(shù)之后才加上這個(gè)limit呢,很簡(jiǎn)單嘛,如果我們?cè)谌〉媒Y(jié)果記錄數(shù)的時(shí)候就加上這個(gè)limit,我們總行數(shù)永遠(yuǎn)不會(huì)大于10,因?yàn)榧由现笏疃喾祷氐挠涗洈?shù)就是10啊兄弟。——這個(gè)顯然不符合實(shí)際情況。所以我們?cè)趫?zhí)行了:
代碼如下
復(fù)制代碼
mysql_num_rows(mysql_query($sql));
取得總記錄數(shù),之后才加上limit關(guān)鍵字的。
好了我們已經(jīng)取得了總記錄數(shù),設(shè)置了每頁(yè)顯示的記錄數(shù)10,現(xiàn)在我們需要的就只有總頁(yè)數(shù)了,這個(gè)小學(xué)的問題我就不說了吧?當(dāng)然是總記錄數(shù)除以每頁(yè)顯示的數(shù)就是總頁(yè)數(shù)了——當(dāng)然也有除不盡的時(shí)候,例如總記錄數(shù)11每頁(yè)顯示10個(gè),我們需要分幾頁(yè)呢?當(dāng)然是兩頁(yè)呢,怎么才能讓11/10=2呢?——顯然是錯(cuò)誤的,但是實(shí)際生活就這樣并不是完美的數(shù)學(xué)。使用ceil函數(shù)啊,這個(gè)上一章也說過了,不說了。
看看我們現(xiàn)在有什么了啊:
代碼如下
復(fù)制代碼
總記錄數(shù),$numRecord = mysql_num_rows(mysql_query($sql));
總頁(yè)數(shù),$totalpage = ceil($numRecord/$pagesize);
我們什么都不缺了,就差如何顯示“上一頁(yè)下一頁(yè)”了,很簡(jiǎn)單,兩個(gè)判斷就搞定了,看index.php的159-163行:
第160行:
代碼如下
復(fù)制代碼
if($page>0) echo “上一頁(yè)|” ;
如果變量$page>0的話,也就是當(dāng)前的頁(yè)碼大于0說明有上一頁(yè),那么就顯示“上一頁(yè)”的鏈接,這個(gè)鏈接里面的$page需要減一,例如當(dāng)前頁(yè)是2,那么上一頁(yè)當(dāng)然是1了是不是,當(dāng)我們點(diǎn)擊上一頁(yè)的時(shí)候,隨著這個(gè)鏈接將會(huì)把page=1傳遞過去,這種依靠鏈接傳遞變量的方式就是get方法。 這就回到了程序8行9行進(jìn)行處理了。
在161行,我們做的判斷是,如果當(dāng)前頁(yè)數(shù)小于總記錄數(shù)-1——因?yàn)槲覀兊捻?yè)碼是從0開始的,所以總記錄數(shù)要減一進(jìn)行判斷才符合實(shí)際。如果這個(gè)判斷成立,說明還有下一頁(yè),下一頁(yè)的時(shí)候$page當(dāng)然要加一了。
好了整個(gè)分頁(yè)就是這樣了,只要記住,如何取得總記錄數(shù),如何為sql語句加上limit關(guān)鍵字,如何判斷顯示上下頁(yè),一切都o(jì)k了
完整的代碼
代碼如下
復(fù)制代碼
$pagesize = 10;//每一頁(yè)顯示多少留言記錄
if(isset($_GET[‘page’])&&$_GET[‘page’]!=”) $page=$_GET[‘page’];
else $page=0;
$sql = “SELECT a . * , b.name, b.email, b.qq, c.revert_time, c.revert
FROM post a
LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b
WHERE a.guest_id = b.id
ORDER BY a.id DESC”;
$numRecord = mysql_num_rows(mysql_query($sql));
$totalpage = ceil($numRecord/$pagesize);
$recordSql = $sql. ” LIMIT “.$page*$pagesize.”,”.$pagesize;
$result = mysql_query($recordSql);
while($rs=mysql_fetch_object($result)){
?>
留言人:name?> |Email:email?>|QQ:qq?>|留言時(shí)間:post_time+8*3600)?>
if(isset($_SESSION[‘login’])&&$_SESSION[‘login’]){
?>
” >刪除
}
?>
留言內(nèi)容:post))?>
回復(fù)內(nèi)容:revert))?>[revert_time!=””) echo date(“Y-m-d H:i:s”,$rs->revert_time+8*3600)?> ]
}
?>
if($page>0) echo “上一頁(yè)|” ;
if($page
?>
www.bkjia.comtrueTechArticle文章是重點(diǎn)是講php中的分頁(yè)原理,同時(shí)我們是利用一個(gè)實(shí)現(xiàn)來講解如何在php中實(shí)現(xiàn)分頁(yè),這個(gè)就是基于自己寫的留方板程序了,有需要的朋…
總結(jié)
以上是生活随笔為你收集整理的php写带分页的留言板,php中分页程序之基于留言板详解_PHP教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java 四字节uid,Java入门教程
- 下一篇: java编写算术平均数,[求助]基础-怎
