十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這個需要用程序遞歸處理
成都創(chuàng)新互聯(lián)從2013年成立,先為東洲等服務(wù)建站,東洲等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為東洲企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
$dept_tree=[];
$deptid?=?19;
while($deptid0){
//假設(shè)你的數(shù)據(jù)庫查詢是這個函數(shù),根據(jù)條件直接查詢一條記錄返回
$dept?=?getone('department',['id'=$deptid]);
//防止數(shù)據(jù)丟失出錯
if(empty($dept))break;
array_unshift($dept_tree,$dept);
$deptid?=?$dept['dep_parentid'];
//如果需要防止數(shù)據(jù)錯亂出現(xiàn)遞歸,這里可以判斷一下
if(in_array($deptid,array_column($dept_tree,'id')?!==?false){
//說明職位關(guān)系亂了,有死循環(huán)
break;
}
}
可以把這段代碼封裝成一個函數(shù)使用。這里就不論從哪一級開始查詢了,總是能把該職位及其上級全部查詢出來,按順序放進數(shù)組里
$dept_tree 類似這樣
array(
0=array(
'id'=1,
'dep_parentid'=0,
'dep_name'='頂級',
),
1=array(
'id'=2,
'dep_parentid'=1,
'dep_name'='國燦金融',
),
2=array(
'id'=4,
'dep_parentid'=2,
'dep_name'='招聘部',
),
3=array(
'id'=19,
'dep_parentid'=4,
'dep_name'='經(jīng)理助理',
),
)
function num($num,$uid)
{
$result1=mysql_query("select * from user where lid='".$uid."'");
$n=mysql_num_rows($result1);
$f = $num + $n;
$t = num($f,$uid)
return $t;
}
用一個遞歸就可以了
查詢所有為0的一級會員
循環(huán)查詢出來的一級會員并為每一個一級會員初始化一個計數(shù)量為0的變量
根據(jù)查詢出來的一級會員ID查所有會員agentid等于一級會員ID的二級會員
得出每個一級會員下面的二級會員數(shù)量,并加在對應(yīng)的計數(shù)量
根據(jù)查詢出來的二級會員ID查所有會員agentid等于三級級會員ID的二級會員
得出每個二級級會員下面的三級會員數(shù)量,并加在對應(yīng)的計數(shù)量
如果有四級可以繼續(xù)循環(huán)下去,最后的計數(shù)量就是每個一級下面有多少個下屬會員了
這個就要看你的數(shù)據(jù)庫是怎么實現(xiàn)的。
我之前給一個人做個一個類似的會員推廣提成的模塊,就a推廣出的a-1,a-2繼續(xù)推廣,得到a-1-1,a-1-2等等。
我的數(shù)據(jù)庫設(shè)計思路如下:
用戶表中有一個son這么一個字段,這個字段中存放名下所有會員的id,用分號隔開。
這個字段的維護:
比如a-1-1推廣出了一個a-1-1-1,此新用戶的id是12345,那么給a-1-1 a-1 a這個三個用戶son字段內(nèi)均添加12345這個id,刪除一個用戶做法一樣。
有了這張表就能實現(xiàn)你要的效果。
查一個會員名下所有的會員,只需要讀取該會員的son字段即可
查一個會員的上級 怎在數(shù)據(jù)庫中所搜son字段,含有此會員id的都是他的上級會員。
當(dāng)然,還有一個字段是標記此會員的直接上級會員,這樣 一張表就能從任意會員得到整個會員推廣樹。
希望這個思路能幫到你。