[php] 我的微型論壇的簡(jiǎn)單教程[已完成]第7/8頁
我們?cè)诘谝徽吕镆呀?jīng)講了首頁如何顯示論壇版塊,當(dāng)然,在第二章節(jié)里我們論壇添加了排序功能,那么SQL語句當(dāng)然也應(yīng)該改成$sql="select * from forums order by forum_list",默認(rèn)為ASC,順序排列數(shù)據(jù)。
現(xiàn)在我們來討論顯示分論壇顯示主題的情況。我命名為forums.php.
利用F作為參數(shù),具體來顯示某個(gè)論壇的帖子。
現(xiàn)在我們進(jìn)入“測(cè)試版塊”來顯示本論壇下的所有主題。顯示結(jié)果如圖:
具體顯示主題列表要解決的主要問提就PHP的分頁。PHP分頁我們可以使用LIMIT來實(shí)現(xiàn)。具體用法:"select clumn field1,...,filedN from table_name limit start_num,end_num";
limit作用是限定結(jié)果行數(shù)。這里可以提取指定的條數(shù),也可以從查詢結(jié)果中取出中間值。舉個(gè)例子來說明:
$sql="select * from [topic] limit 5";
作用是取出topic表中順序前5條數(shù)據(jù);
$sql="select * from [topic] limit 9,10";
提取10條信息,從第9條開始提取。
我們forums.php首先接收F的值:$F=$_GET["F"];注意這里是GET
首先取得當(dāng)前論壇:
<?php
require_once("conn.php");
require_once("global.php");$F=$_GET["F"];
$sql="select forum_name from forums where ID='$F'";
$result=mysql_query($sql);
$rs=mysql_fetch_array($result);
$forum_name=$rs["forum_name"];echo "當(dāng)前論壇為:<a href=\"index.php\">$gb_name</a>-->>$forum_name";
?>
我們這里的分頁當(dāng)然使用"select clumn field1,...,filedN from table_name limit start_num,end_num";這種方式。
end_num當(dāng)然就是我們global.php我們定義的論壇常用的變量$list_rows,而start_num如何計(jì)算呢?依靠的是當(dāng)前頁面intpage,每頁顯示條數(shù)$list_rows和總條數(shù)來結(jié)算的。代碼如下:
<?php
//接上面代碼
$result=mysql_query("select count(ID) from topic where forum_id='$F'");
$num=mysql_result($result,0); //獲得總條數(shù)$intpage=$_GET["intpage"];
if($intpage) $intpage=1;
$start_num=($intpage-1)*$list_rows; //獲取limit開始位置$sql="select ID,title,author,last_post_author as la,last_post_time as lt,no_of_hit,no_of_reply,locked,face,topic,good from topic where forum_id='$F' order by topic desc,last_post_time desc limit $start_num,$list_rows";
$result=mysql_query($sql);//這里當(dāng)然就是表格的HTML代碼啦,自己寫吧if($num>0){
while($rs=mysql_fetch_array($result)){
$FID=$row["ID"];
$author=$row["author"];
$title=$row["title"];
$no_of_reply=$row["no_of_reply"];
$no_of_hit=$row["no_of_hit"];
$lt=$row["lt"];
$la=$row["la"];
$topic=$row["topic"];
$good=$row["good"];
$locked=$row["locked"];
$face=$row["face"];
?>
<tr>
<td><?php echo "<img src=\"$face\">" ?></td>
<td><?php echo "<div class=\"bold\"><a class=\"forum\" href=\"thread.php?T=".$FID."&F=".$F."\">".$title."</a></div>" ?></td>
<td><?php echo $author ?></td>
<td><?php echo $no_of_reply." / ".$no_of_hit ?></td>
<td><div class="lastupdate"><?php echo $lt." By ".$la ?></div></td>
</tr>
<?php
}
Show_pages($num,$F,$intpage,$list_rows);
}else{
echo"本版塊沒有帖子";
}
?>
顯示結(jié)果如下:
分頁就是上面代碼中體現(xiàn)出來的Show_pages($num,$F,$intpage,$list_rows)。效果就是從1到10,從11-20這樣的分頁。分頁的思路就是這樣:
我們得到了所需要的數(shù)據(jù):總記錄,當(dāng)前顯示頁碼,每頁顯示的條數(shù),總記錄和每頁顯示的條數(shù)可以得到總頁碼。如果總頁碼小于等于10,那么直接輸出 1到總頁碼就可以了。如果大于10,那就根據(jù)當(dāng)前頁碼顯示具體的分頁,比如,總頁碼13頁,當(dāng)前第11頁,那么將按照11-13的顯示方式輸出。同時(shí)還會(huì)有上一頁,下一頁等輔助翻頁按鈕。圖示如下:
代碼如下:
Function Show_pages($number,$F,$intpage,$list_rows){ if($pageno>10){
$pageno=ceil($number/$list_rows);
echo "\n<table width=90% border=0 align=center cellpadding=0 cellspacing=0 class=mrg-top>";
echo " <tr>\n <td align=right>\n <table border=0 cellpadding=0 cellspacing=0>\n <tr>";
echo "<td id=pagetop>第".$intpage."頁/共".$pageno."頁</td>";
if($pageno>1)
echo "\n <td><div class=pagefirst><a href=?intpage=1&F=".$F.$IsT."><<</a></div></td>";
if($intpage>1)
echo "\n <td><div class=pagefirst><a href=?intpage=".($intpage-1)."&F=".$F.$IsT."><</a></div></td>";
$a=Floor($pageno/10);
$b=Floor($intpage/10);
$c=$b*10+1;
$d=$b*10+10;
$e=$intpage%10;
$g=($b-1)*10+1;
if($intpage>10){
if($b<$a){
for($i=$c;$i<=$d;$i++) echo "\n <td><div class=pagefirst><a href=?intpage=".$i."&F=".$F.">".$i."</a></div></td>";
}elseif($e==0){
for($i=$g;$i<=$intpage;$i++) echo "\n <td><div class=pagefirst><a href=?intpage=".$i."&F=".$F.">".$i."</a></div></td>";
}else{
for($i=$c;$i<=$pageno;$i++) echo "\n <td><div class=pagefirst><a href=?intpage=".$i."&F=".$F.">".$i."</a></div></td>";
}
}else{
for($i=1;$i<=10;$i++)
echo "\n <td><div class=pagefirst><a href=?intpage=".$i."&F=".$F.">".$i."</a></div></td>";
}
}else{
for($i=1;$i<=$pageno;$i++)
echo "\n <td><div class=pagefirst><a href=?intpage=".$i."&F=".$F.">".$i."</a></div></td>";
}if($pageno>$intpage)
echo "\n <td><div class=pagefirst><a href=?intpage=".($intpage+1)."&F=".$F.">></a></div></td>";
if($pageno>1)
echo "\n <td><div class=pagefirst><a href=?intpage=".$pageno."&F=".$F.">>></a></div></td>";
echo "</td>\n </tr>";
echo "\n</table></td></tr></table>";
}
我上面的代碼自己也認(rèn)為比較爛,有經(jīng)驗(yàn)的大鳥不要笑我……^@^,帖個(gè)好些的分頁代碼。
分頁這里主要利用的就是LIMIT,熟悉了它的用法,簡(jiǎn)單的分頁程序就可以搞定了……
相關(guān)文章
Yii2.0使用阿里云OSS的SDK上傳圖片、下載、刪除圖片示例
本篇文章主要介紹了Yii2.0使用阿里云OSS的SDK上傳圖片、下載、刪除圖片示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09ThinkPHP框架實(shí)現(xiàn)導(dǎo)出excel數(shù)據(jù)的方法示例【基于PHPExcel】
這篇文章主要介紹了ThinkPHP框架實(shí)現(xiàn)導(dǎo)出excel數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了thinkPHP添加org擴(kuò)展基于PHPExcel進(jìn)行Excel數(shù)據(jù)的導(dǎo)出操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05ThinkPHP實(shí)現(xiàn)將SESSION存入MYSQL的方法
這篇文章主要介紹了ThinkPHP實(shí)現(xiàn)將SESSION存入MYSQL的方法,需要的朋友可以參考下2014-07-07基于PHP的登錄和注冊(cè)的功能的實(shí)現(xiàn)
這篇文章主要介紹了基于PHP的登錄和注冊(cè)的功能的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08php刪除數(shù)組指定元素實(shí)現(xiàn)代碼
這篇文章主要介紹了php刪除數(shù)組指定元素實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05smarty簡(jiǎn)單分頁的實(shí)現(xiàn)方法
這篇文章主要介紹了smarty簡(jiǎn)單分頁的實(shí)現(xiàn)方法,以一個(gè)具體的實(shí)例講述了smarty分頁的完整實(shí)現(xiàn)過程,需要的朋友可以參考下2014-10-10淺談Laravel POST,PUT,PATCH 路由的區(qū)別
今天小編就為大家分享一篇淺談Laravel POST,PUT,PATCH 路由的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10PHP用戶驗(yàn)證和標(biāo)簽推薦的簡(jiǎn)單使用
這篇文章主要介紹了PHP用戶驗(yàn)證和標(biāo)簽推薦的簡(jiǎn)單使用,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10