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
                    (
                    )
    
            )
    
    )
  • 相关阅读:
    U132973 双生独白
    Remmarguts' Date(A* 短路)
    P3908 数列之异或
    P1469 找筷子
    P1759 通天之潜水
    P2356 弹珠游戏
    P7072 直播获奖
    P7074 方格取数
    CSP2020二轮游记
    P6205 [USACO06JAN]Dollar Dayz S
  • 原文地址:https://www.cnblogs.com/mengluo/p/5139012.html
Copyright © 2011-2022 走看看