字段:
ID IDS name
顶级分类ID 子分类ID 名称
IDS为0来识别顶级分类 IDS=ID识别ID下的子分类htm中代码为:
循环开始
<li>
<a>顶级分类名称(1个)</a><a>子分类名称(3个或更多)</a>
</li>
循环结束效果:
新闻----新闻子分类1 新闻子分类2 新闻子分类3 ....
新闻s----新闻子分类1s 新闻子分类2s 新闻子分类3s ....
......略我自己弄的效果只显示了顶级分类,子分类只显示一个
而且每次循环除了顶级分类显示正确以外,子分类名称都重复显示在所有顶分类后面。
请问,在php里的代码是什么样的?请给个具体的例子,能带注释更好了,非常感谢~!
ID IDS name
顶级分类ID 子分类ID 名称
IDS为0来识别顶级分类 IDS=ID识别ID下的子分类htm中代码为:
循环开始
<li>
<a>顶级分类名称(1个)</a><a>子分类名称(3个或更多)</a>
</li>
循环结束效果:
新闻----新闻子分类1 新闻子分类2 新闻子分类3 ....
新闻s----新闻子分类1s 新闻子分类2s 新闻子分类3s ....
......略我自己弄的效果只显示了顶级分类,子分类只显示一个
而且每次循环除了顶级分类显示正确以外,子分类名称都重复显示在所有顶分类后面。
请问,在php里的代码是什么样的?请给个具体的例子,能带注释更好了,非常感谢~!
//函数:递归取得当前所在节点的所有父类节点相关信息(由下往上)
//参数:底层节点id;页面连接参数;允许提取的最上层节点id;各个字段之间的分隔符;需要显示的字段(取值范围id,name,parent)
//返回: Echo FatherClass(5)返回分类表数据 根类别 > 一级分类 > 二级分类(无超链接)
//返回: Echo FatherClass(5,"?","lable")返回标签表数据 根类别 > 一级分类 > 二级分类(无超链接)
// Echo FatherClass(5,"?")返回 根类别 > 一级分类 > 二级分类(有超链接)
// Echo FatherClass(5,"","",1,",","id")返回 1,2,3(无超链接)
Function FatherClass($id,$Url='',$Table="service",$Root=1,$Ico=" > ",$FieldSet="name"){
$IsSql="id,parent,name";
IF(StrToLower($FieldSet)=="name"){
//$tmpUrl=Str_iReplace("lass={$id}&","lass=&",$Url);
IF($id==0){Return ($Url=='')?YJ_SysName:"<a href=\"".$Url."Parent=0\" style=\"font-weight:bold;\">易居網</a>";}
}Else{
IF(!StriStr("id,parent,name,",$FieldSet)){
$IsSql="id,parent,name,".$FieldSet;
}
}
Global $Mysql;
$Rs = $Mysql->Get("SELECT ".$IsSql." FROM ".$Table." WHERE id=".$id." ORDER BY id desc LIMIT 0,1");
IF(!$Rs)Return;
$StrField = $Rs[$FieldSet];
$UrlTitle = (($Url=='')?$StrField:"<a href=\"".$Url."parent=".$id."\" style=\"font-weight:bold;\">".$StrField.'</a>');
Return FatherClass($Rs['parent'],$Url,$Table,$Root,$Ico,$FieldSet).((FatherClass($Rs['parent'],$Url,$Table,$Root,$Ico,$FieldSet)=='')?'':$Ico).$UrlTitle;
}不过你的这个数据库设计的似乎有点....我给你提个建议
id 分类id
parent 父分类id(如果已经没有父分类了则值是0)
name 分类名这种数据库设计方法用来存储无限级分类都完全没问题.