下面的讲解我用的是ThinkPHP框架,与PHP用法是一样的。
Step 1、数据表中主要字段是id、parent_id
Step 2、SQL语句:
SELECT * FROM `t_class` WHERE ( is_delete=0 ) ORDER BY parent_id ASC,id ASC //这里的排序是至关重要的
Step 3、查询出的结果是一个常规的二维数组,如下图:
ps:pid就是parent_id,这里是举个例子,下文一样
Step 4、封装的无限级分类数组处理函数:
/** * 无限级分类 * * @access public * @param Array $data * //数据库里获取的结果集 * @param Int $pid * @param Int $count * //第几级分类 * @return Array $treeList */ // 存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空 public static $treeList = array(); static public function tree(&$data, $pid = 0, $count = 1) { foreach ($data as $key => $value) { if ($value['parent_id'] == $pid) { $value['Count'] = $count; self::$treeList[] = $value; unset($data[$key]); self::tree($data, $value['id'], $count + 1); } } return self::$treeList; }
Step 5、应用封装的函数
$data = self::tree($data); //注意传递的参数(括号中的)$data为你从数据库中查询到的数组
Step 6、处理后的数据如图:
Step 7、模板中的实现:
<select class="select" id="sel_Sub" name="sel_Sub"> <option value="0">顶级分类</option> <volist name="catTree" id="dlist" key="k" > <option value="{$dlist.id}"> <if condition="$dlist['Count'] gt 1" > <for start="0" end="$dlist['Count']" name="is"> </for>├ </if> {$dlist.class_name} </option> </volist> </select>
Step 8、最终效果:
到这里就实现了一个无限下级的效果,这个函数是我从互联网上看到借鉴的,进行了一些修改,希望能够帮助大家解决工作或者学习中遇到的困难,不管是PHP还是thinkphp,用法其实一样,如果此文存在错或者有不懂的地方,可以在下方评论栏留言,我将为您解答!
版权声明:
此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[狂码一生]
https://www.sindsun.com/articles/8/21
[若此文确切存在侵权,请联系本站管理员进行删除!]
--THE END--