本文介绍无限级目录树的数据结构和应用操作中的查询:
表结构:
id pid nodepath nodetype nodename 
1 0 0> f classA 
2 0 1> d classB 
3 2 1>0> d classC 
4 2 1>1> d classD 
5 3 1>0>0> f classE 
6 4 1>0>1> d classF 
7 0 2> d classG 
8 0 3> f classH 
9 3 1>0>2> f classI 
10 6 1>0>1>0> f classJ 
11 7 2>0> f classK 一条语句就可以把这个目录书的结构搜索显示出来。
select * from class order by nodepath.
nodepath同时有深度和所属类型的属性。
例子:
<?
mysql_connect("localhost","root","root");
mysql_select_db("test");
$sql=mysql_query("select * from class order by nodepath");
while($a=mysql_fetch_array($sql)){
$pid=$a['pid'];
$nodepath=$a['nodepath'];
$nodetype=$a['nodetype'];
$nodename=$a['nodename'];
$size=strlen($nodepath);
for($ii=0; $ii<$size; $ii++) {
$nbsq.=" ";
}
//$nbsq.="<img src=bar.gif>";
echo $nbsq.$nodename."<br>";
$nbsq="";
}
?>
这样还可以改成用javascript显示子目录的js脚本。希望哪位好手能改一下。
相信有些朋友会需要这样的程序的。

解决方案 »

  1.   

    看的我头都晕了,呵呵,
     yuepengfei(刁馋)
    你这样设计的数据库id可以达到多少位?好象很容易就用完了耶,呵呵!
    而且,,,在删除父节点的时候连带删除其孩子节点的算法是不是要很复杂,我觉得好复杂,还要处理id的值。
    请再讲详细写好吗?我也做了一个,用的是二叉树的遍历,可以达到的层数可以说是int字段类型大小那么多级吧,
    删除,添加功能都实现了,而且树型也做好了,我想看一下什么算法是最好的,我加了你的msn了!!! chaing(华凌) 
    详细讲一下你的吧,我一点都看不懂,呵呵!f,d是什么,还有>是做什么用的呀!
    我的msn:[email protected]我基本上每天都在线....waiting!