关于循环获取会员关系图(下线及下下线)的问题,

努力的老孙 2010-08-10 08:31:38
数据库结构如下:
-- phpMyAdmin SQL Dump
-- version 2.7.0-pl1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2010 年 08 月 10 日 00:06
-- 服务器版本: 5.0.81
-- PHP 版本: 5.2.3
--
-- 数据库: `a0527232048`
--

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

--
-- 表的结构 `ecm_member`
--

CREATE TABLE `ecm_member` (
`user_id` int(10) unsigned NOT NULL auto_increment,
`user_name` varchar(60) NOT NULL default '',
`email` varchar(60) NOT NULL default '',
`password` varchar(32) NOT NULL default '',
`real_name` varchar(60) default NULL,
`gender` tinyint(3) unsigned NOT NULL default '0',
`birthday` date default NULL,
`phone_tel` varchar(60) default NULL,
`phone_mob` varchar(60) default NULL,
`im_qq` varchar(60) default NULL,
`im_msn` varchar(60) default NULL,
`im_skype` varchar(60) default NULL,
`im_yahoo` varchar(60) default NULL,
`im_aliww` varchar(60) default NULL,
`reg_time` int(10) unsigned default '0',
`last_login` int(10) unsigned default NULL,
`last_ip` varchar(15) default NULL,
`logins` int(10) unsigned NOT NULL default '0',
`ugrade` tinyint(3) unsigned NOT NULL default '0',
`portrait` varchar(255) default NULL,
`outer_id` int(10) unsigned NOT NULL default '0',
`activation` varchar(60) default NULL,
`feed_config` text NOT NULL,
`f1` int(11) default NULL,
`f2` int(11) default NULL,
`f1name` varchar(50) default NULL,
`f3` varchar(50) default NULL,
`f2name` varchar(50) default NULL,
`bank` varchar(50) NOT NULL,
`bankname` varchar(50) NOT NULL,
`bankid` varchar(50) NOT NULL,
PRIMARY KEY (`user_id`),
KEY `user_name` (`user_name`),
KEY `email` (`email`),
KEY `outer_id` (`outer_id`)
) ENGINE=MyISAM AUTO_INCREMENT=96 DEFAULT CHARSET=gbk AUTO_INCREMENT=96 ;

--
-- 导出表中的数据 `ecm_member`
--

INSERT INTO `ecm_member` VALUES (2, 'admin', 'a@a.com', '', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1275093978, 1281284329, '123.180.227.156', 160, 0, NULL, 0, NULL, '', NULL, NULL, NULL, NULL, NULL, '', '', '');
INSERT INTO `ecm_member` VALUES (3, 'seller', 'seller@ecmall.com', '94804b00ff7e7223f4e3001c3833b1e4', '超级卖家', 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1275065257, NULL, NULL, 0, 0, NULL, 0, NULL, '', NULL, NULL, NULL, NULL, NULL, '', '', '');
INSERT INTO `ecm_member` VALUES (4, 'buyer', 'buyer@ecmall.com', 'bc5b291c185b468eaa30932b6652e6b9', '超级买家', 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1275065257, NULL, NULL, 0, 0, NULL, 0, NULL, '', NULL, NULL, NULL, NULL, NULL, '', '', '');
INSERT INTO `ecm_member` VALUES (5, 'guanli', 'su@a.com', '1b6905cb28247f28ae52ff56a16124c5', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1275153358, 1275154486, '123.180.232.222', 5, 0, NULL, 0, NULL, '', NULL, NULL, NULL, NULL, NULL, '', '', '');
INSERT INTO `ecm_member` VALUES (6, 'vipstar', 'sunjianyin@126.com', 'c0ec519a6f905e387a9c2c77581c10be', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1275155071, 1280021283, '123.180.244.233', 29, 0, NULL, 0, 'c29d8949f2a4cbab58e35b0bf5debb24', '', 2, NULL, NULL, NULL, NULL, '', '', '');
INSERT INTO `ecm_member` VALUES (61, 'sunjianyin', 'a@aaa.com', 'bfe5f737d317a727547aea1654b49304', '孙先生', 0, '0000-00-00', NULL, NULL, '', '', NULL, NULL, NULL, 1279145780, 1281284254, '123.180.227.156', 46, 0, NULL, 0, NULL, '', 6, 2, 'vipstar', NULL, 'admin', '中国工商银行', '中国工商银行胜利支行', '9558800407110888888');
INSERT INTO `ecm_member` VALUES (93, 'sunjianyin3', 'a@a.com', '0888ac64cfb2e33d259a756902e03595', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1279844699, 1279844699, '123.180.244.233', 1, 0, NULL, 0, NULL, '', 92, 6, 'sunjianyin2', NULL, 'vipstar', '', '', '');
INSERT INTO `ecm_member` VALUES (92, 'sunjianyin2', 'a@a.com', '27c237be1c64d6da37fd74672cf293d5', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1279844033, 1280450866, '123.180.253.14', 3, 0, NULL, 0, NULL, '', 6, 2, 'vipstar', NULL, 'admin', '', '', '');
INSERT INTO `ecm_member` VALUES (94, 'sunjianyin81', 'a@a.com', '068e10a2ad8b0a907a4f1075f33dadba', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1280640545, 1280640751, '123.180.227.156', 2, 0, NULL, 0, NULL, '', 61, 6, 'sunjianyin', NULL, 'vipstar', '', '', '');
INSERT INTO `ecm_member` VALUES (95, 'vipstar89', 's@a.com', '1e424e8d2c057ee1dbd4b5c89c6f52a2', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1281333815, 1281333815, '123.180.227.156', 1, 0, NULL, 0, NULL, '', 2, 0, 'admin', NULL, '', '', '', '');


我写的一段简单的SQL代码如下:

$conzdy = mysql_connect("localhost","a0527232048","111");

mysql_select_db("a0527232048",$conzdy);
$sql1="select * from ecm_member ";
mysql_query("set names 'gbk'");
$jlj=mysql_query($sql1,$conzdy);
while($row=mysql_fetch_array($jlj))
{
echo "<div style=\"border:1px #039 dotted;margin-top:10px;\">";
$id=$row[0];
$username1=$row[1];//会员名
echo $username1."<br>";
$sql2="select * from ecm_member where f1= ".$id."";
$jlj2=mysql_query($sql2,$conzdy);
while($unrow=mysql_fetch_array($jlj2))
{
$ff1= $unrow[0];
$uname2=$unrow[1];//下线会员名
echo $uname2;
echo "<br>";
$sql3="select * from ecm_member where f1= ".$ff1."";
$jlj2=mysql_query($sql3,$conzdy);
while($unrow=mysql_fetch_array($jlj2))
{
$ff2= $unrow[0]." ";
$uname2=$unrow[1]." ";//下下线会员名
echo $uname2;
}
}
echo "</div>";
}


现在的问题是,只能调出一个下线会员,但下下线的会员可以全部调出。
php代码结果见 http://shop2.78123.conn.in/test/26.php

其中 admin还有一个下线会员 sunjianyin89 却显示不出来,


我最终想实现的如这个图的意思



盼指教,谢谢
...全文
277 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
努力的老孙 2010-08-10
  • 打赏
  • 举报
回复
谢谢楼上几位的指点,已成功实现了,
xuzuning 2010-08-10
  • 打赏
  • 举报
回复
你现在的代码有问题哦
。。。
while($unrow=mysql_fetch_array($jlj2))
{
$ff1= $unrow[0];
$uname2=$unrow[1];//下线会员名
echo $uname2;
echo "<br>";
$sql3="select * from ecm_member where f1= ".$ff1."";
$jlj2=mysql_query($sql3,$conzdy);
while($unrow=mysql_fetch_array($jlj2))
{
$ff2= $unrow[0]." ";
$uname2=$unrow[1]." ";//下下线会员名
。。。。

$jlj2 被重复使用了,也就是说一旦进入 “下下线” “下线” 就没有了
那你的变量命名规律,后两个 $jlj2 应为 $jlj3
Dleno 2010-08-10
  • 打赏
  • 举报
回复
要实现你的效果,最好把你的数据结构稍微改一改。
不然最终实现了,却是要查询无数次!
其实一次查询就够了,剩下的就可以交给php数组做下处理。

如:


CREATE TABLE IF NOT EXISTS `class` (
`cid` bigint(12) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID',
`pid` bigint(12) NOT NULL DEFAULT '0' COMMENT '所属上级分类ID',
`cname` varchar(50) CHARACTER SET utf8 NOT NULL COMMENT '分类名称',
`orderid` int(8) NOT NULL DEFAULT '0' COMMENT '分类排序',
`path` varchar(200) CHARACTER SET utf8 NOT NULL COMMENT '分类顺序级别的ID路径',
`levl` int(8) NOT NULL DEFAULT '1' COMMENT '分类级别',
PRIMARY KEY (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- 转存表中的数据 `class`
--

INSERT INTO `class` (`cid`, `pid`, `cname`, `orderid`, `path`, `levl`) VALUES
(1, 0, '亚洲', 1, '1', 1),
(2, 1, '中国', 1, '1,2', 2),
(3, 2, '四川', 1, '1,2,3', 3),
(16, 0, '非洲', 3, '16', 1),
(6, 0, '欧洲', 2, '6', 1),
(7, 1, '韩国', 2, '1,7', 2),
(8, 1, '日本', 3, '1,8', 2),
(9, 1, '泰国', 4, '1,9', 2),
(10, 2, '山东', 2, '1,2,10', 3),
(11, 2, '湖南', 3, '1,2,11', 3),
(12, 2, '海南', 4, '1,2,12', 3),
(13, 2, '上海', 5, '1,2,13', 3),
(14, 2, '北京', 6, '1,2,14', 3),
(17, 0, '美洲', 4, '17', 1),
(18, 0, '大洋洲', 5, '18', 1),
(20, 7, '汉城', 1, '1,7,20', 3),
(21, 8, '东京', 1, '1,8,21', 3),
(22, 8, '富士山', 2, '1,8,22', 3),
(23, 8, '大坂', 3, '1,8,23', 3),
(24, 2, '香港', 7, '1,2,24', 3),
(96, 6, '荷兰', 1, '6,96', 2),
(99, 6, '德国', 4, '6,99', 2),
(100, 6, '罗马', 5, '6,100', 2),
(29, 2, '黑龙江', 8, '1,2,29', 3),
(97, 6, '芬兰', 2, '6,97', 2),
(102, 6, '意大利', 7, '6,102', 2),
(101, 6, '卢森堡', 6, '6,101', 2),
(98, 6, '瑞士', 3, '6,98', 2);

努力的老孙 2010-08-10
  • 打赏
  • 举报
回复
谢谢5楼您的回复,不过不太明白,研究中。。
fancyivan 2010-08-10
  • 打赏
  • 举报
回复
简单的做法是,递归。

void core(int fid)
{
$sql="select id, name from table where fid=".fid;
$res = mysql_query(sql);
if(!$res)
{
return;
}
for each ($res)
{
echo $res['id'].':'.$res['name'];
core($res['fid']);
}
}


调用core(2); //2是整个树的根ID,就是大boss的ID
努力的老孙 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fancyivan 的回复:]
字段f1代表的是它的上级的ID号?
[/Quote]

对,是这样的,F1代表的是上级的user_id
努力的老孙 2010-08-10
  • 打赏
  • 举报
回复
呵呵 当然不是。一个商城而已。
fancyivan 2010-08-10
  • 打赏
  • 举报
回复
字段f1代表的是它的上级的ID号?
fancyivan 2010-08-10
  • 打赏
  • 举报
回复
传销中的技术核心人员? 呵呵,开玩笑

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧