程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 構建網站:用遞歸函數寫個論壇

構建網站:用遞歸函數寫個論壇

編輯:關於PHP編程

論壇的實現方法較為復雜,只要把它分析一下,問題就迎刃而解了,先看看論壇的實現,有人發貼,然後有人跟貼,這個關系形成了一種父子的關聯關系,一般寫個實用論壇,只要解決了這個子父關系,論壇即已成形.
來看看完成論壇的方法,首先得用數據庫來記載這種子父的關系,一般的方法是用無重復的 id 號來完成的,記載父貼的 id 號字段一般用 "parentid" 來記載,子貼存儲時記載父貼的 id 號,而父貼的 parentid 則一率為 0,看看數據庫的記載形式:
父1:id:1 | parentid:0
子1:id:2 | parentid:1
子子1:id:3 | parentid:2
父2:id:4 | parentid:0
子2:id:5 | parentid:4
子2:id:6 | parentid:4
......
如此數據庫記載的子父關系已確立,接著來分析 php 是如何來實現這種父子關系的確立並加入到數據庫的,首先用戶想發言時,他的貼為一個父貼,因此 php 可將 parentid 設置為 0,當有用戶跟貼時,php 將該用戶所跟的父貼的 id 號附值給 parentid,這樣 php 就完成了,子父關系的確立.
實現了子父關系的確立和存儲,接下來就是把這種關系顯示出來,這兒就需要用到遞歸函數來實現了,看下面的代碼:
.....
$result=mysql_query("select * from table where parentid=0");
$num=mysql_numrows($result);
if (!empty($num)) {
for ($i=0;$i<$num;$i++) {
$parentid=mysql_result($result,$i,"id");
function showchild($parentid) {
//加入 ul 控制層進
$result=mysql_query("select * from table where parentid=$parentid");
$numb=mysql_numrows($result);
if (!empty($numb)) {
for ($i=0;$i<$numb;$i++) {
....
$parentid=mysql_result($result,$i,"id");
....
showchild($parentid);
}
....
....
}
....
....
}
showchild($parentid);
....
....
}
....
....
}
上面這段代碼就是利用遞歸函數來實現論壇的方法,當然這個論壇是極其原始的,在不同部分加上功能代碼,就能夠使這個論壇逐漸強大起來,有興趣的讀者不妨自己動手試試.


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved