php - 使用递归查找用户是否是另一个用户php mysql的推荐人

标签 php mysql

我已经为这个问题苦苦挣扎了两天,但我仍然想不出解决办法。我目前正在设计一个网站,用户可以通过他的 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/

相关文章:

php - php 中不显示表格的第一行

javascript - 带有事件源的 Xdebug

php - php 中 Windows Azure 的连接字符串

PHP DOM,方法链

c# - 为什么没有 where 子句的查询会出现输入字符串异常?

mysql - 在 MYSQL 中创建 BEFORE INSERT 触发器

javascript - 保护图像不被复制

php - 在表中显示父子数据

mysql - 如何编写正确的load data infile命令?

mysql - 在 MySql 中存储 html 语法