购买过php,【已解决】PHP项目需求:用户购买商品时,给上级发送一条通知(无限级下级会员)...
無(wú)限級(jí)的過程
上下級(jí)會(huì)員關(guān)系通過id和pid確定。
例如:a>b>c>d>e>f>g...
就是a的下級(jí)是b,b的下級(jí)是c,c的下級(jí)是d....(有點(diǎn)類似傳*銷模式?無(wú)視掉)
需求,通過用戶g查出所有的上級(jí),則要查到f.e.d.c.b.a這些用戶id
方可給這些上級(jí)發(fā)送通知。
我們最重要的是取出上級(jí)id然后就好辦多了。
首先說(shuō)明幾個(gè)值,user_id 為用戶表中的用戶id,parent_id為表中用戶的上級(jí)id。
示例一條基本的查詢父級(jí)idSQL。
SELECT parent_id FROM cx_user WHERE user_id = 10;##查詢user_id為10的上級(jí)id
不說(shuō)廢話了,直接進(jìn)入中心。
打開MySQL開始寫存儲(chǔ)過程。 DROP PROCEDURE IF EXISTS `getpid`;CREATE DEFINER = `root`@`localhost` PROCEDURE `getpid`(IN `id` int)BEGINSET @pid:=id;#id為查詢的參數(shù) 即當(dāng)前用戶idSET @pidarr:=''; #查詢到的上級(jí)數(shù)組字符串recursion:WHILE @pid!=0 DO SELECT parent_id INTO @pid from cx_users WHERE user_id = @pid;#這里是你查詢的SQL語(yǔ)句 @pid是動(dòng)態(tài)id IF @pid=0 THEN #到0即結(jié)束 LEAVE recursion; END IF; IF LOCATE(@pid,@pidarr)>0 THEN #防止出現(xiàn)上下級(jí)關(guān)系混亂 LEAVE recursion; END IF; set @pidarr = concat(@pidarr,@pid); set @pidarr = concat(@pidarr,',');END WHILE recursion;SELECT @pidarr AS pidarr;END;
存儲(chǔ)過程執(zhí)行結(jié)果,拿圖嚇唬嚇唬你。
PHP端demo $sql = "CALL getpid(104);";$pidstr = mysql_query($sql);//換成你項(xiàng)目中執(zhí)行MySQL的函數(shù)即可 然后取出 pidarr的值到$pidstr$pidstr = rtrim($pidstr,',');//剔除最右側(cè)多余英文逗號(hào)$pidarr = explode(',',$pidstr);//到數(shù)組//以下隨意 #ncSJI$@CO3N#@329090*(@@()$u)@j(@(h(@jn9NCD9823N892
總結(jié)
以上是生活随笔為你收集整理的购买过php,【已解决】PHP项目需求:用户购买商品时,给上级发送一条通知(无限级下级会员)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 函数matlab,Matlab函数
- 下一篇: 功率谱估计性能分析及matlab仿真,功