当你在数据库中存储了一个多于三级的数据树,你想在前端展示它,你会怎么做?下面是我在做项目时遇到的一些想法(本项目由thinkphp5开发)。数据库:demand_id为每个类别的ID值,parent_id用于对树进行分类,第一层parent_id的值为0,第二层parent_id的值为其parent的demand_id值,第三层的parent_id是它的第二层parent的demand_id值,第四层和第五层也往后推...Model://获取第三层分类publicfunctiongetTree(){$fields='demand_id,demand_name,parent_id,sort,status';$result=Db::name('demand_class')->field($fields)->where(array('parent_id'=>0,'status'=>'Y'))->order('parent_idasc,按升序排序')->选择();如果(!$result)返回false;$rs=数组();//顶层不显示图片,二级不显示foreach($resultas$v){$cate_id=$v['demand_id'];$rs[$cate_id]['cate_id']=$v['demand_id'];$rs[$cate_id]['cate_name']=$v['demand_name'];$data=$this->_son_cate($v);if($data){foreach($dataas$key=>$val){//if(!isset($val['child']))//继续;//是否有词分类//去掉二级图片//unset($val['url']);$rs[$cate_id]['chilid'][]=$val;}}}foreach($rsas$vv){$info[]=$vv;}返回$信息;}privatefunction_son_cate($pcate_info){$pcate_id=$pcate_info['demand_id'];$fields='demand_id,demand_name,parent_id,sort,status';$result=Db::name('demand_class')->field($fields)->where(array('parent_id'=>$pcate_id))->order('parent_idasc,sortasc')->select();如果(!$result)返回false;foreach($resultas$v){$cate_id=$v['demand_id'];$rs[$cate_id]['cate_id']=$v['demand_id'];$rs[$cate_id]['cate_name']=$v['demand_name'];$data=$this->_son_cate($v);if($data){foreach($dataas$value){if(!is_file(BASE_UPLOAD_PATH.'/'.ATTACH_COMMON.'/category-pic-'.$value['cate_id'].'.jpg')){$value['image']=PHONE_TEMPLATES。'/'。图片。'/'。'default_goods_image.gif';}else{$value['image']=UPLOAD_SITE_URL.'/'。附件常见。'/类别图片-'。$值['cate_id']。'.jpg';}//$value['url']=htmlspecialchars_decode($value['gc_link']);$rs[$cate_id]['child'][]=$value;}}}返回$rs;}Contraller:publicfunctionedit(){//分类$md_goods_class=Model('demand_class');$denamd_class=$md_goods_class->getTree();$this->assign('denamd_class',$denamd_class);返回$this->fetch('demand_from');}前端demand_from.html
