狂码一生_优质编程技术资源与您共享

狂码一生_优质编程技术资源与您共享

狂码一生技术博客站主要是以优质编程技术资源共享为核心,以交流学习为目的搭建的在线平台。我们共享一些优质的资源出来,供同行业的同胞交流与学习,让彼此之间在自身的技术上得到提升,本站主要提供程序方面的资源给大家,像PHP,C++,Javascript,html,asp.net,数据库等等方面的资源,本站计划将在后期会不断完善,建设更多类目的资源,希望能得到更多同行的支持!

PHP无限级分类函数封装与应用

下面的讲解我用的是ThinkPHP框架,与PHP用法是一样的。


Step 1、数据表中主要字段是id、parent_id

blob.png


Step 2、SQL语句:

SELECT * FROM `t_class` WHERE (  is_delete=0  ) ORDER BY parent_id ASC,id ASC        //这里的排序是至关重要的


Step 3、查询出的结果是一个常规的二维数组,如下图:

ps:pid就是parent_id,这里是举个例子,下文一样

blob.png


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、处理后的数据如图:

blob.png


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">
		&nbsp;&nbsp;
	    </for>├ 
	</if>
	{$dlist.class_name}
	</option>
	</volist>
</select>

Step 8、最终效果:

blob.png



    到这里就实现了一个无限下级的效果,这个函数是我从互联网上看到借鉴的,进行了一些修改,希望能够帮助大家解决工作或者学习中遇到的困难,不管是PHP还是thinkphp,用法其实一样,如果此文存在错或者有不懂的地方,可以在下方评论栏留言,我将为您解答!



版权声明: 此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处: [
狂码一生 ] http://www.sindsun.com/article-details-21.html
[若此文确切存在侵权,请联系本站管理员进行删除!]

评论