博客列表 >TP实现树状展示

TP实现树状展示

点墨的博客
点墨的博客原创
2017年08月19日 22:44:251205浏览

表结构如下,父类和子类是存在一张表中的,然后需要在前台完成树状展示

需要完成的展示效果如下:

实现方式:

控制器代码:

public function goodsadd(){

         $catModel=D('Cat');

//数组¥arr装父类

          $arr=$catModel->where('parent_id=0 and cat_id<>0')->order('cat_id,parent_id asc')->select();

//数组$arr1 装 子类

          $arr1=$catModel->where("parent_id<>0")->order('cat_id asc')->select();

//新建数组 $arr0 ,将父类和子类根据父子关系装进去

        for($key=0;$key<count($arr);$key++){

            $arr0[]=array('cat_id'=>$arr[$key]['cat_id'],

                          'pcat_name'=>$arr[$key]['cat_name'],

                          'ccat_name'=>'',

                          'parent_id'  =>$arr[$key]['parent_id']);

    for ($k=0;$k<count($arr1);$k++){

        $pid=$arr1[$k]['parent_id'];

        if($arr[$key]['cat_id']==$pid)

        {

            $arr0[]=array('cat_id'=>$arr1[$k]['cat_id'],

                        'pcat_name'=>'',

                        'ccat_name'=>$arr1[$k]['cat_name'],

                        'parent_id'=>$arr1[$k]['parent_id']);

        }

    }

        }

         $this->assign('catlist',$arr0);

        $this->display();

    }

}

通过以上遍历arr0 的结构如下,这是一个二维数组

Array    

(    

[0] => Array    

(    

[cat_id] => 10    

[pcat_name] => 手机    

[ccat_name] =>    

[parent_id] => 0    

)    

[1] => Array    

(    

[cat_id] => 6    

[pcat_name] =>    

[ccat_name] => 华为mate2    

[parent_id] => 10    

)    

[2] => Array    

(    

[cat_id] => 14    

[pcat_name] =>    

[ccat_name] => 魅族手机    

[parent_id] => 10    

)    

[3] => Array    

(    

[cat_id] => 11    

[pcat_name] => 电脑    

[ccat_name] =>    

[parent_id] => 0    

)    

[4] => Array    

(    

[cat_id] => 15    

[pcat_name] =>    

[ccat_name] => 联想电脑    

[parent_id] => 11    

)    

[5] => Array    

(    

[cat_id] => 12    

[pcat_name] => 配件    

[ccat_name] =>    

[parent_id] => 0    

)    

[6] => Array    

(    

[cat_id] => 7    

[pcat_name] =>    

[ccat_name] => 蓝精灵充电器    

[parent_id] => 12    

)    

[7] => Array    

(    

[cat_id] => 8    

[pcat_name] =>    

[ccat_name] => 南孚电池    

[parent_id] => 12    

)    

[8] => Array    

(    

[cat_id] => 13    

[pcat_name] => 充值卡    

[ccat_name] =>    

[parent_id] => 0    

)    

[9] => Array    

(    

[cat_id] => 16    

[pcat_name] =>    

[ccat_name] => 电信充值卡    

[parent_id] => 13    

)    

)    

VIEW 里面下拉列表显示代码如下:

      <tr>

            <td class="label">商品分类:</td>

            <td><select name="cat_id">

            <option ></option> 

              <volist name="catlist" id='vo'>

              <if condition="$vo.parent_id eq 0">

  <!-- 如果是父类,则该项不能选择 -->

              <option value={$vo.cat_id} disabled >{$vo.pcat_name}</option> 

                <else/>

  <!-- 如果是子类,则该项缩进2个空格,展示层次-->

                 <option value={$vo.cat_id}>&nbsp;&nbsp;{$vo.ccat_name}</option>

                </if>

           </volist>

            </select>

             </td>

          </tr>


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议