php 進(jìn)階:實(shí)現(xiàn)無(wú)限分類
更新時(shí)間:2006年12月16日 00:00:00 作者:
4.路徑跟蹤
------------------------------------------------------------
前面已經(jīng)介紹過(guò)了分類的創(chuàng)建實(shí)現(xiàn)方法,在分類表里記載了 rout_id 和 rout_char 這兩個(gè)存儲(chǔ)分類路徑的信息,在不做任何處理的情況下,程序只能夠順序下到最底層的分類而無(wú)法倒退(當(dāng)然可利用瀏覽器的 back 鍵倒退,但這對(duì)程序來(lái)說(shuō)是不完整的),因此必須將 rout_id 和 rout_char 的信息分解出來(lái)完成實(shí)在的路徑指示.
具體的做法,假如數(shù)據(jù)庫(kù)記載了這么一條分類信息:
id:4
uid:2
type:開(kāi)發(fā)工具
rout_id:0:1:2:4
rout_char:系統(tǒng):linux:開(kāi)發(fā)工具
當(dāng)程序走到分類'開(kāi)發(fā)工具'上時(shí),除了要求顯示路徑信息外還要求能夠去到路徑上的任一分類中,該怎么做能?這里就需要用到 explode() 函數(shù)了.因?yàn)?nbsp;rout_id 和 rout_char 是對(duì)應(yīng)關(guān)系的,所以可將它們分解:
$path=explode(":",$rout_id);
$path_gb=explode(":",$rout_char);
這時(shí)所有分類信息都被分解了,現(xiàn)在要做的就是以鏈接的方式還原路徑信息:
for ($i=0;;$i++) {
$a=$i+1;
echo "<a
href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],"</a>:";
if (empty($path_gb[$i])) {
break;
}
}
上面這段代碼就實(shí)現(xiàn)了加鏈接還原路徑的功能,因?yàn)閷?shí)現(xiàn)的是無(wú)限分類,因此是沒(méi)有上限的,所以在 for($i=0;;$i++) 里沒(méi)有范圍限制,而設(shè)置循環(huán)退出的條件是 $path_gb[$i] 中的值為空,將這段代碼插入類別顯示版面的程序塊內(nèi)就行了:
<?
.....
.....
//顯示分類************************************************
if ($func=='showtype'):
echo "<table>";
//判斷分類的狀態(tài)
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 "<tr><td>";
for ($i=0;;$i++) {
$a=$i+1;
echo "<a
href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],"</a>:";
if (empty($path_gb[$i])) {
break;
}
}
echo "</td></tr>";
//******** end ***********************
} else {
$type='父分類';
}
echo "<tr><td><a href='$php_self?func=createtype&uid=$uid'>創(chuàng)建分類</a></td></tr>";
echo "<tr><td>$type</td></tr>";
$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 "<tr><td>";
echo "<a href='$php_self?func=showtype&uid=$id'>$type</a>";
echo "</td></tr>";
}
}
echo "</table>";
endif; /* end showtype */
.....
.....
?>
完成這個(gè)功能塊后,就可繼續(xù)分類信息的顯示實(shí)現(xiàn)了...
您可能感興趣的文章:
- php無(wú)限分類且支持輸出樹狀圖的詳細(xì)介紹
- 利用php遞歸實(shí)現(xiàn)無(wú)限分類 格式化數(shù)組的詳解
- PHP無(wú)限分類(樹形類)的深入分析
- 基于php無(wú)限分類的深入理解
- 比較簡(jiǎn)單實(shí)用的PHP無(wú)限分類源碼分享(思路不錯(cuò))
- PHP 無(wú)限分類三種方式 非函數(shù)的遞歸調(diào)用!
- PHP無(wú)限分類代碼,支持?jǐn)?shù)組格式化、直接輸出菜單兩種方式
- 一個(gè)很簡(jiǎn)單的無(wú)限分類樹實(shí)現(xiàn)代碼
- php遞歸實(shí)現(xiàn)無(wú)限分類生成下拉列表的函數(shù)
- php用數(shù)組返回?zé)o限分類的列表數(shù)據(jù)的代碼
- 刪除無(wú)限分類并同時(shí)刪除它下面的所有子分類的方法
- php 無(wú)限分類的樹類代碼
- 自己前幾天寫的無(wú)限分類類
- 帖幾個(gè)PHP的無(wú)限分類實(shí)現(xiàn)想法~
- PHP無(wú)限分類的類
- 解析thinkphp的左右值無(wú)限分類
相關(guān)文章
SESSION信息保存在哪個(gè)文件目錄下以及能夠用來(lái)保存什么類型的數(shù)據(jù)
session默認(rèn)是保存到c:\windows\temp目錄下,但是通過(guò)修改php.ini中的session.save_path值可以改變session的保存路徑2012-06-06
PHP的SQL注入實(shí)現(xiàn)(測(cè)試代碼安全不錯(cuò))
看黑客是如何入侵的,我們寫編寫php代碼的過(guò)程中,最好自己先測(cè)試效果。2011-02-02
php + nginx項(xiàng)目中的權(quán)限詳解
這篇文章主要給大家介紹了關(guān)于php + nginx項(xiàng)目中權(quán)限的相關(guān)資料,文章介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
PHP正則匹配日期和時(shí)間(時(shí)間戳轉(zhuǎn)換)的實(shí)例代碼
本文介紹下,用php實(shí)現(xiàn)正則匹配日期與時(shí)間,并進(jìn)行時(shí)間戳轉(zhuǎn)換的例子,有需要的朋友,參考下吧2016-12-12
PHP實(shí)現(xiàn)APP微信支付的實(shí)例講解
下面小編就為大家分享一篇PHP實(shí)現(xiàn)APP微信支付的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
解析使用substr截取UTF-8中文字符串出現(xiàn)亂碼的問(wèn)題
本篇文章是對(duì)使用substr截取UTF-8中文字符串出現(xiàn)亂碼的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

