我有点困惑,什么是最好的解决方案,类别数据库结构。在这里,我有下面的猫狗名单。
1.1一般新闻
1.2娱乐新闻
1.3体育新闻
2.1每日占星术
2.1.1白羊座2.1.2金牛座2.1.3双子座2.1.12双鱼座
2.2“周星观”
2.2.1白羊座2.2.2金牛座2.2.3双子座2.2.12 Pisces
这是我现在的分类名单。在这里,我必须建立管理面板,其中类别和子类别可以添加。目前,我有两个子类的天宫镜。在未来,可以增加更多的子类别,比如每月和每年的占星术。另一个困惑是,每日和每周占星术有相同的子类别,这意味着单一的子类别有多个父类。在这里,如何消除数据库表中的重复。并且我需要使用递归函数在树结构中显示类别。我谷歌的解决方案,我找不到合适的答案。请提供给我答案或链接与此相关。我正在php和MS-服务器数据库中编码.
发布于 2012-04-25 06:40:34
如何尝试这样的方法,有一个类别表,其中有以下字段,id,parent_id和title,然后每个类别都有一个parent_id或0作为顶级类别。
如果您想让标题成为另一个包含id和title的表,那么您可以在分类表上引用标题表中的适当标题。
想想看,它将遵循如下规则集,这正是您要寻找的内容:
至于递归表示它,这是相当容易的方式。希望这能帮到你。
发布于 2012-04-25 06:52:02
下面是一篇关于sql 2005中使用公共表表达式的递归查询的文章。
http://www.sqlservercentral.com/articles/T-SQL/recursivequeriesinsql1999andsqlserver2005/1846/
我建议你注册他们的通讯,新的东西几乎每天都会派上用场。
发布于 2012-04-25 07:47:17
这是几年前我写的一些丑陋的代码..。但这可能对你有帮助
DB表"table_name“结构
ID PARENT NAME
1 0 1
2 0 2
3 1 1.1
4 1 1.2
5 4 1.2.1
6 4 1.2.2
7 2 2.1获取和准备数据
$Select = mysql_query("SELECT * FROM table_name");
while($Row = mysql_fetch_assoc($Select)){
if($Row['parent'] == 0){
$Arr[$Row['id']] = $Row['name'];
}else{
$Childs[$Row['parent']][$Row['id']] = $Row['name'];
}
}一些愚蠢但充分的函数
function gettree($Array){
global $Childs;
foreach($Array as $key => $value){
echo '<li>'.$value.'</li>';
if(isset($Childs[$key])){
echo '<li><ul>';
gettree($Childs[$key]);
echo '</ul></li>';
}
}
}和胀树到html。
echo '<ul>';
gettree($Arr);
echo '</ul>';结果应该是这样的
1
1.1
1.2
1.2.1
1.2.2
2
2.1我建议您将其重写到对象中,以便更好地使用。
对不起我的英语
https://stackoverflow.com/questions/10310249
复制相似问题