php递归查询不会,,求教。就是一个三级分类传个ID找到他的上级,还有父级。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php递归查询不会,,求教。就是一个三级分类传个ID找到他的上级,还有父级。。相关的知识,希望对你有一定的参考价值。

要是能写成一个函数就最好了,我用thinkphp的。。谢啦

这种类型的数据,一般数据库中,一张表会有存在两个字段,一个是它本身id,另一个是它的父级parent_id。
既然要找到它的祖父级,sql语句这样写:
$id = empty($_POST['id'])?'':$_POST['id'];
$parent_id = get_parent_id($id);
$p_p_id = get_parent_id($parent_id);
function get_parent_id($id)
$sql = "select parent_id from ecs_table1 where id=" . $id;
return($GLOBALS['db']->getone($sql ));

递归,就是根据现有的id,重复取。
上面get_parent_id只是获取父id,当然,你可以写一个直接获取祖父id的函数。
不过,现在大部分php网站,都只会有获取父类的函数,想discuz,ecshop等。获取祖父id,就是不断的获取该id的父id。
参考技术A

给你一个函数吧。这个不是递归的。效率比递归的强,而且支持无限极分类

直接将 M(表名)->select()的数据传进去就可以。

附一个表结构

CREATE TABLE `zhibo_article_category` (
  `cat_id` smallint(5) NOT NULL AUTO_INCREMENT,
  `cat_name` varchar(255) NOT NULL DEFAULT '',
  `parent_id` smallint(5) NOT NULL DEFAULT '0' COMMENT '父id',
  PRIMARY KEY (`cat_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

/**
 * 把返回的数据集转换成Tree
 * @param array $list 要转换的数据集
 * @param string $pid parent标记字段
 * @param string $level level标记字段
 * @return array
 */
function list_to_tree($list, $root = 0, $pk='cat_id', $pid = 'parent_id', $child = 'child') 
    // 创建Tree
    $tree = array();
    if(is_array($list)) 
        // 创建基于主键的数组引用
        $refer = array();
        foreach ($list as $key => $data) 
            $refer[$data[$pk]] =& $list[$key];
        

        foreach ($list as $key => $data) 
            // 判断是否存在parent
            $parentId =  $data[$pid];
            if ($root == $parentId) 
                $tree[] =& $list[$key];
            else
                if (isset($refer[$parentId])) 
                    $parent =& $refer[$parentId];
                    $parent[$child][] =& $list[$key];
                
            
        
    
    return $tree;

以上是关于php递归查询不会,,求教。就是一个三级分类传个ID找到他的上级,还有父级。。的主要内容,如果未能解决你的问题,请参考以下文章

递归查询子分类

php递归无限极分类怎么弄

PHP.32-TP框架商城应用实例-后台10-商品分类-需求分析创建无限级商品分类,递归

无限极分类不用递归生成多维数组(树)的方法

《分布式微服务电商》专题(十四)-电商项目商品类目后台页面访问

几十万条数据用PHP递归能实现无限级分类吗