Настройка SQL и базы данных для приложения downline-builder - PullRequest
1 голос
/ 01 апреля 2011

Я сейчас создаю сайт для клиента, который хочет downloadbuilder или что-то в этом роде. По сути, это сайт с регистрационной формой, и у каждого участника есть referral-url , который содержит его идентификатор-указатель, поэтому, когда кто-то присоединяется, он помещается как нижестоящий член в виде пирамидальная структура .

Сам сайт содержит страницу со ссылками на другие сайты типа MLM , так что человек, который только что присоединится, будет у кого-то внизу, и ему будут показаны реферальные ссылки на другие сайты MLM. с реферальным идентификатором его вышестоящего для соответствующих сайтов MLM .

Если эти новые члены решат следовать их вышестоящему и стать также участниками других сайтов MLM он / она может замените URL на этих сайтах их реферальными URL для программ MLM. Это все довольно просто и относительно легко построить.

хитрая часть равна , когда новый участник не следует его / ее вышестоящему для определенной программы MLM , если это так нижестоящий этот новый участник увидит реферальные идентификаторы вышестоящего элемента нового члена или первого в иерархии , который ввел свой URL-адрес реферала.

Например, Мистер Браун на изображении ниже, присоединяется только к программе 1 & 2 , его downline видит все три программы, но одна из них присоединяется только программа 2 и 3 это означает, что для программы 3 его прямой восходящий канал будет верхним пределом мистера Брауна . (см. фиолетовую линию).

enter image description here

Именно в этой части я не уверен, как я могу это сделать без сложного рекурсивного поиска и что, если кто-то выйдет или покинет сайт?

Есть ли способ сделать такой поиск с помощью SQL или любой другой техники . Я думал о сохранении 'пути' в столбце таблицы с линией восходящих линий для каждого нового члена, так что относительно легко найти родителя, деда и так далее. Но все же вам нужно рекурсивно пройти по этому пути, чтобы найти первый с реферальным URL. Также, если вы удалите кого-то из дерева , все пути необходимо обновить , чтобы отразить новую ситуацию.

Нет предела тому, насколько глубоко или широко может стать дерево.

Надеюсь, это не слишком смущает. И между прочим, это НЕ первоапрельская шутка, мне бы очень хотелось, чтобы это было ...

1 Ответ

1 голос
/ 01 апреля 2011

Полагаю, вы знаете, когда представляете г-на Z (на которого указывает г-н Браун), г-н Z является нижестоящим г-ном Брауном.Я также предполагаю, что вы храните эту реферальную информацию.

Когда вы показываете г-ну Z все программы, когда г-н Z подписывается на программу, вы можете просто просмотреть реферальную информацию и определить, подписал ли этот человекна ту же программу.Если да, то вы можете сохранить нижеследующую информационную ссылку для перерегистрации программы Mr. Browns Program 1.Если мистер Браун не зарегистрирован, то, используя данные рефералов, вы можете пройти к тому, кто направил мистера Брауна, и проверить то же самое.

Надеюсь, это имеет смысл, я недостаточно знаком с MySql, но используюКод это должно быть довольно легко сделать это рекурсивно.Пример кода псевдо:

int GetUplineProgramId(User, ProgramID)
     Select All ProgramID's that the person who referred me signed up for
     If my referred is signed up for program, then return that record ID
     else return GetUplineProgramId(my referrals UserID, ProgramID)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...