各位大佬们好,小弟有以下问题,产品三类,数据库procatalog结构如下: pcid pcname level parentid 1 工业照明灯 1 0 2 白炽灯 2 1 3 普通照明白炽灯 3 2 4 微型灯泡 3 2 5 聚光灯泡 3 2 数据挖掘研究院 6 气体放电灯 2 1 7 氙气灯 3 6 8 霓虹灯管 3 6 --------------------------------------------------- php下如何才能这样显示: -> 工业照明灯 -> 白炽灯 -> 普通照明白炽灯 -> 微型灯泡 -> 聚光灯泡 -> 气体放电灯 数据挖掘研究院 -> 氙气灯 -> 霓虹灯管 --------------------------------------------------- 小弟一直在线,谢谢各位指点.怎么循环? 递归? 能不能写写.. 谢谢
CSDN的大佬们,指点一下啊,这里应该没有这么冷清吧...
数据查询出来生成一个XML 然后通过读取节点的方式读取出来 这个过程中 就从parentid 判断它的值有没有pcid与其相等从而判断是属于第几级分类 呵呵 ·· 我是反照别人的方法这么做的
其实只用javascript就可以实现, 如果用for 也简单,你不是有level 吗?if一下再显示就行了 <script LANGUAGE="JavaScript"> lists =[["--请选择--","--请选择--"], ["商场卖场","综合商场","大卖场","超市","便利店"], ["日常用品零售","食品","服装/鞋帽","钟表/眼镜","化妆品/卫生用品","文体器材","报刊图书","音像电子","珠宝首饰","工艺美术品/收藏品","照相器材"], 数据挖掘实验室 ["汽车相关","4s店","汽车零售","汽配","汽车燃料/汽车周边","汽车养护/维修/汽车美容","汽车俱乐部"], ["电器/电子产品零售","家用电器","计算机整机/配件/周边","电话/手机/传真"], ["宾馆酒店","宾馆酒店"], ["金融","银行","证券","保险"], ["房地产相关","房地产开发经营","房产中介/咨询/评估/担保","房屋装修","家具/家装材料"], ["生活服务","家庭服务","洗衣/干洗/洗染","婚介/婚庆","摄影扩印","职业介绍"], ["医疗卫生相关","综合医院","专科医院","妇幼保健","药品/医药器械销售","保健品销售","妇婴用品销售"], ["健身美容相关","健身中心","保龄球","高尔夫","球类运动","美容院","理发/美发","瘦身"], 数据挖掘论坛 ["餐饮","中餐","西餐","快餐","自助餐","茶馆","咖啡馆","酒吧","风味特色小吃"], ["娱乐","夜总会","KTV/迪士高","俱乐部/沙龙","网吧","游乐园/公园","手工DIY(陶艺/缝纫/绘画等)"], ["旅游相关","旅行社","交通票务代理","旅游用品"]] ln = lists.length function init(){ str = " <select name=first onchange=ssel(value)> " for(i=0;i <ln;i++){ str += " <option value='"+i+"'> "+lists[i][0]+" </option> " } selit1.innerHTML = str + " </select> "; selit2.innerHTML = " <select> <option> --请选择-- </option> </select> "; } function ssel(x){ sln = lists[x].length 数据挖掘交友 str = " <select name=second> <option> --请选择-- </option> " for(i=1;i <sln;i++){ str += " <option value='"+i+"'> "+lists[x][i]+" </option> " } selit2.innerHTML = str + " </select> "; } onload=init </script> <TABLE cellSpacing=0 cellPadding=0 width="60%" align=center border=0> <TR bgColor=#ffffff> <TD height=26 id=selit1> </TD> </TR> <TR bgColor=#ffffff> <TD height=26 id=selit2> </td> </TR> </TABLE>
引用 2 楼 cuidenghong123 的回复: 数据查询出来生成一个XML 然后通过读取节点的方式读取出来 这个过程中 就从parentid 判断它的值有没有pcid与其相等从而判断是属于第几级分类 呵呵 ·· 我是反照别人的方法这么做的 数据挖掘研究院
cuidenghong123兄,怎么听起来这么复杂哦,郁闷,我对XML,递归不是很懂,能不能就我的例子弄弄... > _ <
引用 3 楼 magicone 的回复: 其实只用javascript就可以实现, 如果用for 也简单,你不是有level 吗?if一下再显示就行了 <script LANGUAGE="JavaScript"> lists =[["--请选择--","--请选择--"], ["商场卖场","综合商场","大卖场","超市","便利店"], ["日常用品零售","食品","服装/鞋帽","钟表/眼镜","化妆品/卫生用品","文体器材","报刊图书","音像电子","珠宝首饰","工艺美术品/收藏品","照相器材"], ["汽车相关","4s店","汽车零售","汽配","汽车燃… magicone兄的这个javascript是没有什么问题的了,现在我是想按这样显示: ----------------------- -> 工业照明灯 数据挖掘实验室 -> 白炽灯 -> 普通照明白炽灯 -> 微型灯泡 -> 聚光灯泡 -> 气体放电灯 -> 氙气灯 -> 霓虹灯管 ----------------------- 不用下拉列表的形式,后面的数值都是从数据库中读出来的,我对这样列出来的程序不知道怎么写,还问兄弟多多指教.
递归: //把读出来的数据放进二维数组 $resultarr=array(); $query=$db-> query("select * from $optable"); while($myresult=$db-> fetch_array($query)){ $resultarr[]=$myresult; 数据挖掘实验室 } //递归函数:查找 $pid 的子项: function gettypeselect($pid){ global $resultarr; foreach($resultarr as $result){ if($result[pcid]==$pid){ //找到一行 echo str_repeat(" ",$result[level])."-> $result[pcname]"; gettypeselect($result[parentid]); //递归,查找自己的子项 } } } gettypeselect(0);
引用 6 楼 faisun 的回复: 递归: //把读出来的数据放进二维数组 $resultarr=array(); $query=$db-> query("select * from $optable"); while($myresult=$db-> fetch_array($query)){ $resultarr[]=$myresult; } 数据挖掘研究院
//递归函数:查找 $pid 的子项: function gettypeselect($pid){ global $resultarr; foreach($resultarr as $result){ if($result[pcid]==$pid){ //找到一行 echo str_repeat(" ",$result[level])."-> $result[pcname]"; get… 非常谢谢faisun兄的回答,我先研究下... ------------------- 测试没有显示...?Fatal error: Call to a member function on a non-object... 我只是把那个$optable改成了procatalog数据库名,那个$db怎么定义的?是不是要改成mysql?大大,别打我啊... :(Create By Any-Extract(WL-AE)