//查询该推荐人是否满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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)