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

要是能写成一个函数就最好了,我用thinkphp的。。谢啦... 要是能写成一个函数就最好了,我用thinkphp的。。谢啦 展开
 我来答
浪默子
推荐于2016-04-11 · TA获得超过6.6万个赞
知道大有可为答主
回答量:6435
采纳率:84%
帮助的人:760万
展开全部
这种类型的数据,一般数据库中,一张表会有存在两个字段,一个是它本身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。
shen000love
2018-05-18 · TA获得超过394个赞
知道小有建树答主
回答量:520
采纳率:0%
帮助的人:271万
展开全部

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

直接将 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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周阳002
2017-03-08 · 知道合伙人互联网行家
周阳002
知道合伙人互联网行家
采纳数:45 获赞数:58
某外贸企业技术工程师

向TA提问 私信TA
展开全部
你可以使用phptree 这个类 实现无限分类,我个人 不建议写函数。学编程要学会思考。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式