4.路徑跟蹤 ------------------------------------------------------------ 前面已經介紹過了分類的創建實現方法,在分類表裡記載了 rout_id 和 rout_char 這兩個存儲分類路徑的信息,在不做任何處理的情況下,程序只能夠順序下到最底層的分類而無法倒退(當然可利用浏覽器的 back 鍵倒退,但這對程序來說是不完整的),因此必須將 rout_id 和 rout_char 的信息分解出來完成實在的路徑指示. 具體的做法,假如數據庫記載了這麼一條分類信息: id:4 uid:2 type:開發工具 rout_id:0:1:2:4 rout_char:系統:linux:開發工具 當程序走到分類開發工具上時,除了要求顯示路徑信息外還要求能夠去到路徑上的任一分類中,該怎麼做能?這裡就需要用到 explode() 函數了.因為 rout_id 和 rout_char 是對應關系的,所以可將它們分解: $path=explode(":",$rout_id); $path_gb=explode(":",$rout_char); 這時所有分類信息都被分解了,現在要做的就是以鏈接的方式還原路徑信息: for ($i=0;;$i++) { $a=$i+1; echo "",$path_gb[$i],":"; if (empty($path_gb[$i])) { break; } } 上面這段代碼就實現了加鏈接還原路徑的功能,因為實現的是無限分類,因此是沒有上限的,所以在 for($i=0;;$i++) 裡沒有范圍限制,而設置循環退出的條件是 $path_gb[$i] 中的值為空,將這段代碼插入類別顯示版面的程序塊內就行了: ..... ..... //顯示分類************************************************ if ($func==showtype): echo ""; //判斷分類的狀態 if ($uid!=0) { $result=mysql_query("select * from type where id=$uid"); $type=mysql_result($result,0,"type"); //******** 新加入的代碼 *************** $rout_id=mysql_result($result,0,"rout_id"); $rout_char=mysql_result($result,0,"rout_char"); $path=explode(":",$rout_id); $path_gb=explode(":",$rout_char); echo ""; for ($i=0;;$i++) { $a=$i+1; echo "",$path_gb[$i],":"; if (empty($path_gb[$i])) { break; } } echo ""; //******** end *********************** } else { $type=父分類; } echo "創建分類"; echo "$type"; $result=mysql_query("select * from type where uid=$uid"); $num=mysql_numrows($result); if (!empty($num)) { for ($i=0;$i<$num;$i++) { $id=mysql_result($result,$i,"id"); $type=mysql_result($result,$i,"type"); echo ""; echo "$type"; echo ""; } } echo ""; endif; /* end showtype */ ..... ..... ?> 完成這個功能塊後,就可繼續分類信息的顯示實現了... <全文完>