Помогите разобраться Есть задача сделать пирамиду по типу один юзер привел второго а второй третьего и.т.д Проблема заключается в том что каждый из этих юзеров может заработать очки за какие-то действия, например если ю.2 заработает 10 очков то ю.1 получит одно очко а если ю.3 заработает 100 то ю.2 получит 10 а ю.1 одно очко. Зарабатывать они могут как по 1 так и по 2 и по 5 очков за раз. В базе юзеры хранятся в таком виде: Код (Text): id | u_id | r1 | r2 | r3 | 1 1 2 3 4 2 2 3 4 3 3 4 Все это работает т.е. я могу посмотреть кто кого привел и.т.д. но не могу догнать как узнать что ю.3 заработал 100 чтобы выдать остальным очки, пож. помогите, как это можно реализовать? Как хранить эти очки чтобы можно было видеть разницу между всеми юзерами? Спасибо.
Я бы поступил по другому (я не профессионал, по этому не стоит рассматривать мое решение как идеал), я бы разбил на 2 таблицы, первая пользователи, в ней бы не было кто кого привел, но были бы заработанные баллы. А вот во второй там всего 3 столбца: ID, имя пользователя и кого привел. допустим пользователь с очень редким ником Alex привел троих, это бы выглядело в БД так: Код (Text): id | user | follower ............................ 15 | Alex | Max 16 | Alex | Voland ............................ 25 | Alex | user1999 если тебе надо посмотреть кого привел Alex, просто делаешь что бы тебе выдало все записи где user = 'Alex', примерно как то так.
Принцип пирамиды - многократный развод лохов, а структура не имеет значения http://lenta.ru/news/2014/03/20/mmm11/ Я чуть не прослезился, пока читал.
Но баллы надо зачислять не тем, кого привел Alex, а наоборот: Alex должен получать баллы от тех, кого он привел, когда они получают балы. И еще он должен получать баллы от тех, кого привели те, кого привел он. С фиксированным количеством реферальных уровней (например, три), оптимальнее одна таблица с несколькими полями, а не список связей, тем более, что "хозяева" не меняются. Зачем пересчитывать заново при каждом пополнении баланса, если можно посчитать однажды - при регистрации? Я не знаю, что автор имел ввиду под полями r1, r2, r3, но пускай будет r3 - это хозяин Алекса, а r2 - хозяин хозяина Алекса, а r1 - Мавроди. Теперь, когда Алекс получит 1000 баллов, его r3 мы зачислим 100, r2 - 10 и 1 Мавроди. Если вдруг Алекса пригласил чел, хозяин которого сам Мавроди, то r1 у Алекса будет пустым полем, Мавроди - в r2. Это нужно посчитать только при регистрации, после чего структура будет как на ладони.
Но разве в той таблице что я привел нельзя это реализовать, допустим Max заработал 100 баллов, я делаю запрос в базу, ищу запись где follower='Max', должна найтись всего одна запись (id 15), и от туда беру что что user='Alex', что значит что Alex надо зачислить 10 баллов, потом делаю еще запрос в БД где я ищу запись follower='Alex' т.е. я ищу того кто привел Alex да бы зачислить ему 1 балл. еще как вариант, если речь идет о пирамиде из 2 уровней т.е. я получаю с тех кого я привел и с тех кто привел кого я привел, а дальше все, я уже не получаю, то можно использовать и одну таблицу, в ней сделать дополнительно 2 столбца 1й уровень и 2й уровень и писать ники приведенных через какой-нибудь спец символ, например |, а при регистрации запретить пользователю использовать символ |, а потом получая из БД получая эту строку разбивать ее на массив , где разделитель будет |. Но мне все же первый вариант нравится больше, он более понятный, логичный и вообще.
Нет, не знают. Они знают то, что им сказали. Они не думают. Они барашки. И да, автор, почитай, полезно http://www.rg.ru/2012/11/13/proekt-fin-piramid-site-dok.html