php 實現無限分類(4)

來源:互聯網
上載者:User

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 "<a
href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],"</a>:";
if (empty($path_gb[$i])) {
break;
}
}

上面這段代碼就實現了加連結還原路徑的功能,因為實現的是無限分類,因此是沒有上限的,所以在 for($i=0;;$i++) 裡沒有範圍限制,而設定迴圈退出的條件是 $path_gb[$i] 中的值為空白,將這段代碼插入類別顯示版面的程式塊內就行了:

<?
.....
.....
//顯示分類************************************************
if ($func=='showtype'):

echo "<table>";

//判斷分類的狀態
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'>建立分類</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 */
.....
.....
?>

完成這個功能塊後,就可繼續分類資訊的顯示實現了...

<全文完>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.