我已经为这个问题苦苦挣扎了两天,但我仍然想不出解决办法。我目前正在设计一个网站,用户可以通过他的 memberid 注册其他用户,这样我们就可以给他积分。网站中的一个主要游戏要求,如果一个用户注册了另外两个用户,他的百分比等于 1。然后该函数必须递归检查这两个用户中的每一个,如果他们也分别注册了两个用户,然后将百分比增加到 3。因此,对于除第一个级别之外的每个级别,百分比必须增加 2;
这是一个小图表,向您展示它应该如何工作:
[A]
[B] [C]
[D] [E] [F] [G]
[H][I] [j][k] [l][m] [o][p]
A代表我们要查找百分比的成员。他注册[B]和[C]他的百分比=1 B 寄存器 [D] 和 [E] percentage+=1.C 寄存器 [F] 和 [G] percentage+=1. 所以在这个级别检查 percentage 将等于 3.
这是我想出的功能,但它不完整,我很确定它不会工作。卡住了,请帮助我。
function calcpercentage($id)
{
$count=0;
$percent=1;
$id1=$id;
$sql="SELECT * from bs100049 WHERE RefId='$id1'";
$checkh=mysql_query($sql) or die('error'.mysql_error());
while($result=mysql_fetch_array($checkh)&& $count<=2)
{
$count++;
$id1=$result['MemberId'];
$percent++;
}
}
因为我也在使用 mysql,这并不容易。可以肯定的是,一旦我弄清楚了这个函数,我就能够编写一个函数来为每个用户动态地绘制上面的树。
这里有一个更好的解释(我想在 Dan 回答后发布这个,但我不能) 这是这个网站的设计工作原理。只有当现有成员是您的推荐人时,您才能注册,因此在“成员”表中将存储您的 ID 和推荐人的 ID。以这种格式(id,name,memberid,refid)。一旦你注册,你就可以申请参加不同的游戏。bs100049 游戏需要你自己购买并注册 2 个用户。完成后你可以确定你已经赚了 1%。当且仅当你的两个注册用户都完成了你上面所做的(他们每个人都注册了两个用户)然后百分比从 1 增加到 3 等等 百分比的下一个值将是 5,依此类推。如果用户购买了 bs100049 游戏,他会自动存储在 bs100049 表中,即使他还没有任何注册用户,所以如果他查询查看他的是什么当前百分比是 1%...
最佳答案
这是我的方法。请注意,您应该考虑切换到 PDO 或 mysqli,因为 mysql 函数已被弃用。为了示例的缘故,我使用了它们。您还必须确保您的数据确实形成了一棵树,否则您将陷入无限循环。
如果你能避免递归尝试。
我假设被推荐用户的 ID 存在于名为 id 的表中。我还假设推荐用户永远不会超过两个,并将其限制为 2 个。
function calc($id) {
$sql = "SELECT * FROM bs100049 WHERE RefId='$id' LIMIT 2";
$res = mysql_query($sql);
if(mysql_num_rows($res) == 2) {
// We have two referred users (1 point) and if calc returns 1 we add 1 for each user.
$user1 = mysql_result($res, 0, 'id');
$user2 = mysql_result($res, 1, 'id');
return 1 + (1 * calc($user1)) + (1 * calc($user2));
}
// If we get here we have 0 or 1 referred users.
return 0;
}
关于php - 使用递归查找用户是否是另一个用户php mysql的推荐人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13847125/