【已解决】PHP项目需求:用户购买商品时,给上级发送一条通知(无限级下级会员)

WBOY
Freigeben: 2016-06-20 12:40:20
Original
1093 Leute haben es durchsucht

无限级的过程

上下级会员关系通过id和pid确定。

例如:a>b>c>d>e>f>g...

就是a的下级是b,b的下级是c,c的下级是d....(有点类似传*销模式?无视掉)

需求,通过用户g查出所有的上级,则要查到f.e.d.c.b.a这些用户id

方可给这些上级发送通知。

我们最重要的是取出上级id然后就好办多了。

首先说明几个值,user_id 为用户表中的用户id,parent_id为表中用户的上级id。

示例一条基本的查询父级idSQL。

SELECT parent_id FROM cx_user WHERE user_id = 10;##查询user_id为10的上级id

不说废话了,直接进入中心。

打开MySQL开始写存储过程。

DROP PROCEDURE IF EXISTS `getpid`;CREATE DEFINER = `root`@`localhost` PROCEDURE `getpid`(IN `id` int)BEGINSET @pid:=id;#id为查询的参数 即当前用户idSET @pidarr:=''; #查询到的上级数组字符串recursion:WHILE @pid!=0 DO  SELECT parent_id INTO @pid from cx_users WHERE user_id = @pid;#这里是你查询的SQL语句 @pid是动态id      IF @pid=0 THEN #到0即结束         LEAVE recursion;      END IF;      IF LOCATE(@pid,@pidarr)>0 THEN #防止出现上下级关系混乱         LEAVE recursion;      END IF;  set @pidarr = concat(@pidarr,@pid);  set @pidarr = concat(@pidarr,',');	END WHILE recursion;SELECT @pidarr AS pidarr;END;
Nach dem Login kopieren

存储过程执行结果,拿图吓唬吓唬你。

PHP端demo

$sql = "CALL getpid(104);";$pidstr = mysql_query($sql);//换成你项目中执行MySQL的函数即可 然后取出 pidarr的值到$pidstr$pidstr = rtrim($pidstr,',');//剔除最右侧多余英文逗号$pidarr = explode(',',$pidstr);//到数组//以下随意 #ncSJI$@CO3N#@329090*(@@()$u)@j(@(h(@jn9NCD9823N892
Nach dem Login kopieren


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage