php+mysql實(shí)現(xiàn)無限級(jí)分類 | 樹型顯示分類關(guān)系
更新時(shí)間:2006年11月19日 00:00:00 作者:
無限級(jí)分類,主要是通過儲(chǔ)存上級(jí)分類的id以及分類路徑來實(shí)現(xiàn)。由于數(shù)據(jù)的結(jié)構(gòu)簡(jiǎn)單,所以要將分類的關(guān)系由樹狀顯示,我只能想到用遞歸的方式給于實(shí)現(xiàn)。
無限級(jí)分類,主要是通過儲(chǔ)存上級(jí)分類的id以及分類路徑來實(shí)現(xiàn)。由于數(shù)據(jù)的結(jié)構(gòu)簡(jiǎn)單,所以要將分類的關(guān)系由樹狀顯示,我只能想到用遞歸的方式給于實(shí)現(xiàn),下面是分類數(shù)據(jù)表結(jié)構(gòu)和自己寫的一個(gè)樹狀顯示函數(shù),有什么不妥的地方希望大家能指出。
表結(jié)構(gòu):id字段為分類標(biāo)識(shí),name字段為分類名,father_id字段為所屬父分類的id,path字段為分類路徑(儲(chǔ)存該分類祖先的集合),isdir判斷是否是目錄(1為是,0為否)。
顯示函數(shù):
其中$this->sql對(duì)象為sql操作類對(duì)象,re_datas()函數(shù)返回查到的數(shù)組,sql_numrows()函數(shù)返回查詢到的數(shù)目
調(diào)用方法:$sort_list = sort_list($sort_list,0,1);
以上為個(gè)人思想,還望大家多多指點(diǎn)
無限級(jí)分類,主要是通過儲(chǔ)存上級(jí)分類的id以及分類路徑來實(shí)現(xiàn)。由于數(shù)據(jù)的結(jié)構(gòu)簡(jiǎn)單,所以要將分類的關(guān)系由樹狀顯示,我只能想到用遞歸的方式給于實(shí)現(xiàn),下面是分類數(shù)據(jù)表結(jié)構(gòu)和自己寫的一個(gè)樹狀顯示函數(shù),有什么不妥的地方希望大家能指出。
表結(jié)構(gòu):id字段為分類標(biāo)識(shí),name字段為分類名,father_id字段為所屬父分類的id,path字段為分類路徑(儲(chǔ)存該分類祖先的集合),isdir判斷是否是目錄(1為是,0為否)。
顯示函數(shù):
復(fù)制代碼 代碼如下:
//$count為分類等級(jí)
sort_list($str,$fatherid,$count)
{
$rs = $this->sql->re_datas("select * from sort where father_id = fatherid");
$num = $this->sql->sql_numrows();
$i=0;
$n = 1;
while(isset($rs[$i]))
{
$name = "";
for($n = 1 ; $n < $count ; $n++)
{
$name.="│ ";
}
if($i+1==$num)
{
$name.="└─".$rs[$i][name];
}
else
{
$name.="├─".$rs[$i][name];
}
if($rs[$i][isdir])
{
$str.="<span style='color:#CCCCCC'>".$name."</span>";
}
else
{
$str.=$name";
}
$temp = $count+1;
$str = $this->sort_list($str,$rs[$i][id],$temp);
$i++;
}
return $str;
}
sort_list($str,$fatherid,$count)
{
$rs = $this->sql->re_datas("select * from sort where father_id = fatherid");
$num = $this->sql->sql_numrows();
$i=0;
$n = 1;
while(isset($rs[$i]))
{
$name = "";
for($n = 1 ; $n < $count ; $n++)
{
$name.="│ ";
}
if($i+1==$num)
{
$name.="└─".$rs[$i][name];
}
else
{
$name.="├─".$rs[$i][name];
}
if($rs[$i][isdir])
{
$str.="<span style='color:#CCCCCC'>".$name."</span>";
}
else
{
$str.=$name";
}
$temp = $count+1;
$str = $this->sort_list($str,$rs[$i][id],$temp);
$i++;
}
return $str;
}
其中$this->sql對(duì)象為sql操作類對(duì)象,re_datas()函數(shù)返回查到的數(shù)組,sql_numrows()函數(shù)返回查詢到的數(shù)目
調(diào)用方法:$sort_list = sort_list($sort_list,0,1);
以上為個(gè)人思想,還望大家多多指點(diǎn)
相關(guān)文章
PHP設(shè)計(jì)模式之模板方法模式定義與用法詳解
這篇文章主要介紹了PHP設(shè)計(jì)模式之模板方法模式,結(jié)合實(shí)例形式詳細(xì)分析了php設(shè)計(jì)模式中模板方法模式的概念、原理、定義、用法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-04-04
Laravel網(wǎng)站打開速度優(yōu)化的方法匯總
最近在學(xué)習(xí) Laravel 框架,自己做了個(gè)小站,總結(jié)了一些 Laravel 網(wǎng)站性能提升的方法。所以下面這篇文章主要給大家匯總介紹了關(guān)于Laravel網(wǎng)站打開速度優(yōu)化的一些方法,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
PHP 5.5 創(chuàng)建和驗(yàn)證哈希最簡(jiǎn)單的方法詳解
最近 PHP 5.5.0 發(fā)布了,并帶來了一份完整的全新特性與函數(shù)的列表。全新API之一就是Password Hashing API.它包含4個(gè)函數(shù):password_get_info(), password_hash(), password_needs_rehash(),和password_verify().讓我們分步來了解每個(gè)函數(shù)2013-11-11
PHP利用REFERER根居訪問來地址進(jìn)行頁(yè)面跳轉(zhuǎn)
這篇文章主要是根據(jù)referfer判斷來源,然后跳轉(zhuǎn)到制定頁(yè)面,以防出現(xiàn)了無法訪問頁(yè)面,用戶體驗(yàn)不好2013-09-09
PHP mysqli_free_result()與mysqli_fetch_array()函數(shù)詳解
這篇文章主要介紹了PHP mysqli_free_result()與mysqli_fetch_array()函數(shù)詳解的相關(guān)資料,需要的朋友可以參考下2016-09-09
PHP獲取訪問頁(yè)面HTTP狀態(tài)碼的實(shí)現(xiàn)代碼
這篇文章主要介紹了一個(gè)PHP獲取訪問頁(yè)面HTTP狀態(tài)的再封裝函數(shù),需要的朋友可以參考下2016-11-11
php中將地址生成迅雷快車旋風(fēng)鏈接的代碼[測(cè)試通過]
php中將地址生成迅雷快車旋風(fēng)鏈接的代碼,非常不錯(cuò),將下面的代碼保存為cs.php運(yùn)行即可。2011-04-04
PHP中檢查isset()和!empty()函數(shù)的必要性
在本篇文章里小編給大家總結(jié)的是關(guān)于PHP中同時(shí)檢查isset()和!empty()函數(shù)的必要性原因,有需要的朋友們學(xué)習(xí)下。2019-02-02

