这个就要看你的数据库是怎么实现的。
为玉屏等地区用户提供了全套网页设计制作服务,及玉屏网站建设行业解决方案。主营业务为成都网站建设、成都网站设计、玉屏网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
我之前给一个人做个一个类似的会员推广提成的模块,就a推广出的a-1,a-2继续推广,得到a-1-1,a-1-2等等。
我的数据库设计思路如下:
用户表中有一个son这么一个字段,这个字段中存放名下所有会员的id,用分号隔开。
这个字段的维护:
比如a-1-1推广出了一个a-1-1-1,此新用户的id是12345,那么给a-1-1 a-1 a这个三个用户son字段内均添加12345这个id,删除一个用户做法一样。
有了这张表就能实现你要的效果。
查一个会员名下所有的会员,只需要读取该会员的son字段即可
查一个会员的上级 怎在数据库中所搜son字段,含有此会员id的都是他的上级会员。
当然,还有一个字段是标记此会员的直接上级会员,这样 一张表就能从任意会员得到整个会员推广树。
希望这个思路能帮到你。
方法一:用循环
function getNext($array, $curr_key)
{
$next = 0;
reset($array);
do
{
$tmp_key = key($array);
$res = next($array);
} while ( ($tmp_key != $curr_key) $res );
if( $res )
{
$next = key($array);
}
return $next;
}
function getPrev($array, $curr_key)
{
end($array);
$prev = key($array);
do
{
$tmp_key = key($array);
$res = prev($array);
} while ( ($tmp_key != $curr_key) $res );
if( $res )
{
$prev = key($array);
}
return $prev;
}
方法二:用Iterator,不过要先得到position
// 默认查找键为key元素的后一个元素
function get_element($key, $arr, $who='next')
{
//查找键为$key元素的位置
$offset = array_search($key, array_keys($arr));
if(FALSE == $offset || NULL == $offset) { return ;}
//查找哪个元素,前一个或后一个?
if ('prev' == $who) {
$arr = array_reverse($arr);
} else if ('next' == $who) {
} else {
throw new Exception("错误的参数");
}
对许多方法 都可以在后盾里面找到 而且很详细 很容易理解
这里假设sex中1表示男性。
本来一条SQL就OK,非要二条的话,
SELECT *
FROM `study`
WHERE `sex`=1 AND `age`19
非要二条的话可这样:
-------------------------
SELECT *
FROM `study`
WHERE `id`
IN (
SELECT `id`
FROM `study`
WHERE `sex` =1
)
AND age 19
-------------------------
测试的表和数据如下:
------------------------
--
-- 表的结构 `study`
--
CREATE TABLE `study` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) NOT NULL,
`age` int(11) NOT NULL,
`sex` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
--
--表中的数据 `study`
--
INSERT INTO `study` VALUES (1, 'aaaa', 18, 1);
INSERT INTO `study` VALUES (2, 'bbb', 19, 1);
INSERT INTO `study` VALUES (3, 'cccc', 20, 0);
INSERT INTO `study` VALUES (4, 'ddd', 21, 1);
INSERT INTO `study` VALUES (5, 'eee', 22, 1);
INSERT INTO `study` VALUES (6, 'ffff', 23, 0);
INSERT INTO `study` VALUES (7, 'hhh', 18, 1);
INSERT INTO `study` VALUES (8, 'jjj', 34, 1);