Многоуровневая реферальная система

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

Решение

Кажется, вы ищете 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...

]
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]