php无限分类 数据库查询 怎么找到符合条件的推荐人,程序怎么写?求帮忙

php无限分类 数据库查询 怎么找到符合条件的推荐人,程序怎么写?求帮忙,第1张

function selectReferee($rid){

    //查询该推荐人是否满3个人

    $sql = "SELECT * FROM talbe_name WHERE `id` = ".$rid

    $res = array()//$res为查询结果

    if(count($res)>=3){

        foreach ($res as $k=>$v){

            selectReferee($v['id'])//如果该推荐人满了3个人,则递归查询下面的所有人

        }

    }else{

        return $rid//返回推荐人id

    }

}

大概的思路就是这样,主要是一个递归,你自己完善,测试一下

数据库设置3个字段 id name fid fid就是顶级id的意思

id name fid

1 分类1 0

2 分类2 0

3 分类1-1 1

4 分类1-2 1

5 分类2-1 2

6 分类2-2 2

数据库就是这种模式,fid为0的是最大分类。id为3 和 4的分类 是id 为 1 分类的子分类 ,所以fid都为 1 。5和6是id 为 2的子分类。

你查找数据库的时候查找 fid=0的数据 ,找出顶级分类 1 和 2 ,再查找fid分别为 1 和 2的分类,就是对应的子类,你用foreach遍历出来就是了,

何为无限分类?

如果你要实现树状结构的数据结构,首先数据库的设计应该这样:

1.表必须要具有节点ID,父节点ID之两个字段

2.根节点的父节点ID可以设置成为根节点的ID

如下所示:

节点ID      父节点ID      名称

----------------------------------------------

1      1      根节点

2      1      一级子节点1

3      1      一级子节点2

4      2      二级子节点1

5      2      二级子节点2

6      3      二级子节点3

7      3      二级子节点4

如果要将上表的数据显示到TreeView,可以采用递归函数调用的方法如下:

Function ListData(ByVal iID as Integer)

    '从数据库获取此iID所对应的行

     'SQL语句如:select * from table1 where 节点ID=iID

     '将此行数据显示到TreeView

     '从数据库获取以iID为父ID的行

     'SQL语句如:select * from table where 父节点ID=iID

     '循环调用ListData函数附带每一行数据的节点ID为参数来显示子节点的数据

    Call ListView(节点ID)

End Function


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9369794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存