zoukankan      html  css  js  c++  java
  • 无限极分类

    mysql> use admin
    Database changed
    mysql> create table cate(
        -> id int unsigned not null primary key auto_increment,
        -> name char(15) not null,
        -> pid int unsigned not null,
        -> sort smallint(6) not null);
    Query OK, 0 rows affected (0.48 sec)
    
    mysql> desc cate;
    +-------+------------------+------+-----+---------+----------------+
    | Field | Type             | Null | Key | Default | Extra          |
    +-------+------------------+------+-----+---------+----------------+
    | id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | name  | char(15)         | NO   |     | NULL    |                |
    | pid   | int(10) unsigned | NO   |     | NULL    |                |
    | sort  | smallint(6)      | NO   |     | NULL    |                |
    +-------+------------------+------+-----+---------+----------------+
    

      

    public function index(){
                import('common.category',COMMON_PATH);
                $cate=M('cate')->order('sort ASC')->select();
                $catea=new category();
                $catex=$catea::zifenleia($cate);
    
                print_r($catex);
    //            $this->assign('catex',$catex);
    //            $this->display();
            }
    
            public  function addcate(){
    //            $pid=isset($_GET['pid'])?$_GET['pid']:0;
                $this->pid=I('pid',0,'intval');
                $this->display();
            }
    
            public  function ADDreturn(){
                if(M('cate')->add($_POST)){
                    $this->success('添加成功',U(MODULE_NAME.'/Category/index'));
                }else{
                    $this->error('出错');
                }
            }
            //排序
            public function sort(){
                $db=M('cate');
               foreach($_POST as $id=>$sort){
                   $db->where(array('id'=>$id,))->setField(array('sort'=>$sort));
               }
                $this->redirect(MODULE_NAME.'/category/index');
    
            }
            //删除
            public function delete(){
                $db=M('cate');
    
            }
    
    }
    class Category{
                /**
                 * 组合一维数组,用于输出顶级栏目所属的二级栏目
                 */
                Static Public function unlimitedForLevel($m, $html='--', $f_id=0, $level=0){
                    $arr=array();
                    foreach ($m as $v){
                        if ($v['f_id'] == $f_id){
                            $v['level']=$level+1;
                            $v['html']=str_repeat($html,$level);
                            $arr[]=$v;
                            $arr=array_merge($arr,self::unlimitedForLevel($m,$html,$v['id'],$level+1));
                        }
                    }
                    
                    return $arr;
                }
                
                /**
                 * 多维数组,用于在前台输出含有二级栏目的导航条
                 */
                Static Public function unlimitedForLayer ($m, $name = 'child', $f_id = 0) {
                    $arr = array();
                    foreach ($m as $v) {
                        if ($v['f_id'] == $f_id) {
                            $v[$name] = self::unlimitedForLayer($m, $name, $v['id']);
                            $arr[] = $v;
                        }
                    }
                    return $arr;
                }
                
                /**
                 * 传递一个子分类ID返回所有的父级分类
                 */
                Static Public function getParents ($m, $id) {
                    $arr = array();
                    foreach ($m as $v) {
                        if ($v['id'] == $id) {
                            $arr[] = $v;
                            $arr = array_merge(self::getParents($m, $v['f_id']), $arr);
                        }
                    }
                    return $arr;
                }
                
                /**
                 * 传递一个父级分类ID返回所有子分类
                 */
                Static Public function getChilds ($m, $f_id) {
                    $arr = array();
                    foreach ($m as $v) {
                        if ($v['f_id'] == $f_id) {
                            $arr[] = $v;
                            $arr = array_merge($arr, self::getChilds($m, $v['id']));
                        }
                    }
                    return $arr;
                }
                
    
                /**
                 * 传递一个父级分类ID返回所有子分类ID(注意:这里的f_id是栏目表的父级id,根据数据库表的名字填写)
                 */
                Static Public function getChildsId ($m, $f_id) {
                    $arr = array();
                    foreach ($m as $v) {
                        if ($v['f_id'] == $f_id) {
                            $arr[] = $v['id'];
                            $arr = array_merge($arr, self::getChildsId($m, $v['id']));
                        }
                    }
                    return $arr;
                }
                
                
                /**
                 * 传递一个子分类ID返回父级分类ID(注意:这里的f_id是栏目表的父级id,根据数据库表的名字填写)
                 */
                Static Public function getfId ($m, $id) {
                    $arr = array();
                    foreach ($m as $v) {
                        if ($v['id'] == $id) {
                            $arr[] = $v['f_id'];
                            $arr = array_merge($arr, self::getfId($m, $v['f_id']));
                        }
                    }
                    return $arr;
                }
                
                
    }
    Array
    (
        [0] => Array
            (
                [id] => 1
                [name] => PHP
                [pid] => 0
                [sort] => 1
                [child] => Array
                    (
                        [0] => Array
                            (
                                [id] => 4
                                [name] => PHP1
                                [pid] => 1
                                [sort] => 100
                                [child] => Array
                                    (
                                    )
    
                            )
    
                        [1] => Array
                            (
                                [id] => 6
                                [name] => sdasd
                                [pid] => 1
                                [sort] => 100
                                [child] => Array
                                    (
                                    )
    
                            )
    
                    )
    
            )
    
        [1] => Array
            (
                [id] => 2
                [name] => MYSQL
                [pid] => 0
                [sort] => 2
                [child] => Array
                    (
                        [0] => Array
                            (
                                [id] => 5
                                [name] => MYSQL   2
                                [pid] => 2
                                [sort] => 100
                                [child] => Array
                                    (
                                    )
    
                            )
    
                    )
    
            )
    
        [2] => Array
            (
                [id] => 3
                [name] => LInux
                [pid] => 0
                [sort] => 3
                [child] => Array
                    (
                    )
    
            )
    
    )
  • 相关阅读:
    静态构造函数(C# 编程指南)
    SQL SERVER2008 存储过程、表、视图、函数的权限
    EF架构~为EF DbContext生成的实体添加注释 【转】
    WebBrowser 多线程问题,寻求解答!(已经搞清楚!) 【转】
    EF架构~将数据库注释添加导入到模型实体类中 【转】
    window.name web开发iframe 跨域间的值传输问题
    javascript 验证 国际格式 电话号码
    认识HTML5的WebSocket
    Jquery 滚屏
    哎 为了自己的生活能过的去 从今天起开始写技术博客 请大家多多指教
  • 原文地址:https://www.cnblogs.com/mengluo/p/5139012.html
Copyright © 2011-2022 走看看