php怎么实现一张表中子类ID归于父类ID

数据库的表是这样的,表名tmodule_conf要求输出的格式如下:书籍----科学书籍---科学书籍1技术----php技术----js技术----html技术----... 数据库的表是这样的,表名tmodule_conf
要求输出的格式如下:
书籍
----科学书籍
---科学书籍1
技术
----php技术
----js技术
----html技术
----linux技术
----mysql技术
求详细代码,同时求解释,好评!!!!!!
展开
 我来答
nic_colin
推荐于2016-06-30 · TA获得超过104个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:182万
展开全部

现在你的里面只分了两个类。其实这个表可以做无限级分类。输出用递归实现。正好我这几天研究了这个。代码写给你。

$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."&nbsp;&nbsp;");  //$arr[$i][1]表示第$i+1个分类的id的值。进行递归,也就是把自己的ModuleId作为SubModuleId参数把自己的子类再循环出来。   
  }  
 }   
}
//调用例子

fenlei(-1," &nbsp;&nbsp;");
06xinxi
2013-12-12 · TA获得超过138个赞
知道答主
回答量:35
采纳率:100%
帮助的人:23.9万
展开全部

先查出父类,也就是说先把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/>";
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Janper
2013-12-12 · TA获得超过206个赞
知道小有建树答主
回答量:469
采纳率:0%
帮助的人:137万
展开全部
先查出父类,也就是说先把SupModuleId全部select出来,再用foreach或者while查询子SupModuleId=ModuleId就可以了。
追问

请问代码是这样的咩   会出错的呢

科学书籍
科学书籍1
技术
---6
---6
---6
---6
---p
---p
php技术
js技术
html技术
linux技术
mysql技术

 

显示和需要显示的不是一样的呢

追答
$sql = "select * from tmodule where submoduleid = -1";这段这样子查出来就行了。这两天在忙。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式