php怎么实现一张表中子类ID归于父类ID
数据库的表是这样的,表名tmodule_conf要求输出的格式如下:书籍----科学书籍---科学书籍1技术----php技术----js技术----html技术----...
数据库的表是这样的,表名tmodule_conf
要求输出的格式如下:
书籍
----科学书籍
---科学书籍1
技术
----php技术
----js技术
----html技术
----linux技术
----mysql技术
求详细代码,同时求解释,好评!!!!!! 展开
要求输出的格式如下:
书籍
----科学书籍
---科学书籍1
技术
----php技术
----js技术
----html技术
----linux技术
----mysql技术
求详细代码,同时求解释,好评!!!!!! 展开
3个回答
展开全部
现在你的里面只分了两个类。其实这个表可以做无限级分类。输出用递归实现。正好我这几天研究了这个。代码写给你。
$result = mysql_query("select * from tmodule_conf order by ModuleId");
//首先我们把各个分类的值保存在一个二维数组中,在下面的递归函数里有用。
while($row = mysql_fetch_object($result)){
$arr[] = array($row->ModuleId,$row->SubModuleId,$row->ModuleName);//每行保存一个分类的ModuleId,SubModuleId,ModuleName
}
###########普通显示分类####################
function fenlei($SubModuleId=-1,$str){ //$f_id初始化为0,也就是从最大分类开始循环.
global $arr; //声明$arr为全局变量才可在函数里引用。
for($i=0;$i<count($arr);$i++){ //对每个分类进行循环。
if($arr[$i][1]==$SubModuleId){ //$arr[$i][1]表示第$i+1个分类的SubModuleId的值。开始$SubModuleId=-1,也就是把SubModuleId=-1的分类输出来。
echo $str."--".$arr[$i][2]."<br>"; //$arr[$i][2]表示第$i+1个分类的name的值。
fenlei($arr[$i][0],$str." "); //$arr[$i][1]表示第$i+1个分类的id的值。进行递归,也就是把自己的ModuleId作为SubModuleId参数把自己的子类再循环出来。
}
}
}
//调用例子
fenlei(-1," ");
展开全部
先查出父类,也就是说先把SupModuleId里面 值为 -1 的按升序全部select出来,再用foreach或者while查询子类SupModuleId=筛选出来的父类ModuleId就可以了。
代码如下:
$sql_f = "SELECT * FROM tmodule_conf WHERE SupModuleId = -1 ORDER BY ModuleId ASC";
$result_f = mysql_query($sql_f);
while($row = mysql_fetch_array($result_f)){
$f_id = $row['ModuleId'];
echo $row['ModuleName']."<br/>";
$sql_c = "SELECT * FROM tmodule_conf WHERE SupModuleId = ".$id;
$result_c = mysql_query($sql_c);
$arr_c = mysql_fetch_array($result_c);
foreach($arr_c as $res){
echo "---".$res['ModuleName']."<br/>";
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询