多级推荐系统

时间:2014-11-18 10:42:06

标签: php system

username    referrer
--------    --------
admin
kelly88     admin   // UPDATE USERNAME ADMIN WITH +5 POINTS //
jacob       kelly88 // UPDATE USERNAME ADMIN WITH +3 POINTS AND USERNAME kelly88 WITH +5 POINTS //
david16     jacob   // UPDATE USERNAME ADMIN WITH +1 POINTS AND USERNAME kelly88 WITH +3 POINTS AND USERNAME jacob WITH +5 POINTS //

这可能吗?如果是 - 如何?

我只知道如何用第一级做到这一点。

$query = 'UPDATE users SET points = points + :points WHERE username = :username';
$select = $db->prepare($query);
$select->bindValue(':points', 5.00, PDO::PARAM_STR);
$select->bindValue(':username', 'admin', PDO::PARAM_STR);// admin = $userInfo['referrer']
$select->execute();

1 个答案:

答案 0 :(得分:1)

似乎您正在寻找PHP解决方案。由于您没有表明您正在使用数据库,因此我假设数据位于数组中。不幸的是,我现在无法对其进行测试,但是这样的事情应该可以胜任:

$refs = array("admin" => "", "kelly88" => "admin", "jacob" => "kelly88", "david16" => "jacob");
$points = array();

foreach ($refs as $usr => $ref)
{
   reward($ref,5);
}

function reward($ref,$rew)
{// rewards: 5-3-1 points
   global $refs, $points;
   if ($ref && array_key_exists("ref",$refs))
   {
       if (!array_key_exists($ref,$points)) $points[$ref]=0;
       $point[$ref]+=$rew;  
       if ( $rew > 1)  reward($refs[$ref] , $rew-2); // referrer's referrer and onwards...

    ]
}