3

我已经为这个问题苦苦挣扎了两天,但我仍然无法提出解决方案。我目前正在设计一个网站,用户可以通过他的会员注册其他用户,以便我们可以给他积分。该网站的主要游戏之一要求如果用户注册了另外两个用户,他的百分比等于 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]百分比+=1.C在这里也注册[F]和[G]百分比+ =1.所以在这个级别的检查百分比将等于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,所以它并不容易。我确信一旦我弄清楚了这个函数,我就可以编写一个函数来为每个用户动态地绘制上面的树。

这是一个更好的解释(我想在丹的回答之后发布,但我不能)这是这个网站的设计工作方式。只有现有成员是您的推荐人,您才能注册,因此在“会员”表中您的 id 和推荐人的将被存储。以这种格式(id,name,memberid,refid)。一旦您注册,您可以申请参加不同的游戏。bs100049 游戏要求您自己购买并注册 2 个用户。一旦完成,您可以确定您已经赚取 1%。如果且仅当您的两个注册用户都完成了您在上面所做的事情(他们每个人都注册了两个用户),那么百分比从 1 增加到 3,因此下一个百分比值将是 5,依此类推。如果用户购买了 bs100049 游戏,

4

2 回答 2

0

我认为要使其递归,您首先必须定义最终情况 - 当用户未注册 2 个用户时:

function calcpercentage($id){

    //SQL to get $count (number of users this user has referred) + also array of usr ids at this 'level'

    foreach($usr_ids as $usr_id){

        if($count<2){
            return 0;
        }else{
            return 1+calcpercentage($usr_id);
        }
    }
}
于 2012-12-12T19:58:59.967 回答
0

这是我的方法。请注意,您应该考虑切换到 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;
}
于 2012-12-12T19:59:54.897 回答