• php不使用递归实现无限极分类


    无限极分类常用的是递归,但是比较不好理解,其实可以用数据库path,pid两个字段的设计来实现无限分类的功能

    1、数据库设计

    通过上图可以看出pid就是该栏目的父id,而path = 父path+pid;

    2、php实现《树形查询》《逆向查询》以及给定栏目id《查询下一级》的方法:

    $mysql = new MySQLi('localhost','root','','test');
    $mysql->query("set names gb2312");
    /**
     * 获取无限分类列表(树形查询) 主要用于后台的栏目列表
     */
    $sql = 'select ac_name,concat(path,"-",ac_id) as bpath from article_class order by bpath,ac_id';
    $result = $mysql->query($sql);
    while($row = $result->fetch_assoc()){
        echo $row['ac_name'].'<br />';
    }
    echo '<hr />';
    /**
     * 指定分类获取全部的父类(逆向查询) 主要用于编辑文章时获取该文章的相关分类
     */
    $ac_id = 10;
    $sqlonly = 'select * from article_class where ac_id='.$ac_id;
    $resultonly = $mysql->query($sqlonly);
    $pclass = array();
    $curclass = '';
    while ($rowonly = $resultonly->fetch_assoc()){
        $curclass = $rowonly['ac_name'];
        $arrpaht = explode('-',$rowonly['path']);
        $arrpaht = implode(',',$arrpaht);
        
        $sqlall = 'select * from article_class where ac_id in ('.$arrpaht.') order by ac_id';
    
        $resultall = $mysql->query($sqlall);
        while($rowall = $resultall->fetch_assoc()){
            $pclass[] = $rowall['ac_name'];    
        }
    }
    array_push($pclass,$curclass);
    echo '<pre>';
        print_r($pclass);
    echo '</pre>';
    echo '<hr />';
    /**
     * 指定分类获取下一级分类 主要用于展开分类时显示下一级分类使用
     */
    function getNextClass($ac_id){
        global $mysql;
        $sql = 'select * from article_class where pid='.$ac_id;
        $resultnext = $mysql->query($sql);
        while($rownext = $resultnext->fetch_assoc()){
            echo $rownext['ac_name'].'<br />';    
        }
    }
    getNextClass(1);

    3、相应的页面效果如下:

    If the copyright belongs to the longfei, please indicate the source!!!
  • 相关阅读:
    不容易系列之(4)——考新郎
    阿牛的EOF牛肉串
    一只小蜜蜂
    C#设计模式——简单工厂模式
    C#设计模式总结
    [设计模式]单例模式
    Jquery真的不难~第一回 编程基础知识
    大树底下不长草,微软底下?
    下一站 java
    如果电磁不能永久保存,那最终会留下什么?
  • 原文地址:https://www.cnblogs.com/longfeiPHP/p/5175545.html
Copyright © 2020-2023  润新知