我的设想是这样的比如添加了一个一级类别【网站新闻】[ismain=0],其classid是1,mainid=0;然后在这个大类下添加个二级类别【通知公告】[ismain=1],它的classid比如说是2;-->它的mainid就是1;再在【通知公告】这个二级类别下添加三级类别【最近通知】[ismain=2],它的classid比如是3->mainid是2;
如果再要添加一级类别【站点广告】[ismain=0],其classid比如是4,因为是大类,所有mainid=0;
在这个大类下添加二级类别【flash广告】[ismain=1],其classid比如是6,从属于【站点广告】所以mainid就是4;还可以添加更小的类别。。这个表的结构的意思就是mainid代表当前classid所从属的那个上级类别的classid值
而ismain是判断这个类别的级数的,0是一级类别,1为二级类别,2为三级类别依次类推
不知道我说明白了没#14
如果再要添加一级类别【站点广告】[ismain=0],其classid比如是4,因为是大类,所有mainid=0;
在这个大类下添加二级类别【flash广告】[ismain=1],其classid比如是6,从属于【站点广告】所以mainid就是4;还可以添加更小的类别。。这个表的结构的意思就是mainid代表当前classid所从属的那个上级类别的classid值
而ismain是判断这个类别的级数的,0是一级类别,1为二级类别,2为三级类别依次类推
不知道我说明白了没#14
1. 只需三个字段 ID parentID title
1 0 root
2 1 news
3 1 ad
4 2 announce
5 4 recent announce
所有结点都是root结点的子结点
除了root每个结点都有父结点,一级分类的父结点为1
有了这样的结构你可以使用递归方法来取得整个树
当树不是很大的时候使用这种方法简单,但需多次查询数据库function listTree($parentID = 0)
{
$sql = "select * from tree where parentID = $parentID";
$res = mysql_query($sql);
while($arr = mysql_fetch_array($res))
{
// 输出当前结点信息
echo $arr['id'] ."---".$arr['title'];
//查询该结点的子节点
listTree($arr['parentID']);
}
}上面代码没测试, 使用递归的方法遍历树的简单例子
function listTree($parentID = 0)
{
$sql = "select * from tree where parentID = $parentID";
$res = mysql_query($sql);
while($arr = mysql_fetch_array($res))
{
// 输出当前结点信息
echo "" . str_repeat( " ", $arr['parentID'] ) . "- " . $arr['title'] . "<br/>";
//查询该结点的子节点
listTree($arr['ID']);
}
}