Refsystem

Drrichardfahrer

Well-known member
ID: 207405
L
20 April 2006
7.060
691
Wie funktioniert eigentlich ein Refsystem programmiertechnisch in mySQL??? Wenn jeder User nur in jeder Refebene nur 1 Ref haben kann, könnte man ja quasi eine lange Schlage machen...

Aber wie funktioniert das in den Scripten wie Jagusch, etc.???
Mit programmiertechnisch mein ich jetzt, ob da zig Tabellen sind, oder ob bei den Userdaten schon alle Refs drinnen stehen, oder ob es eine eigene Ref-Tabelle gibt...???

Für detaillierte (und ich meine wirklich sehr detaillierte) Antworten gibt es Losebonus. Man kann mir gerne auch Scriptbeispiele zeigen!

Danke schon im Voraus!!!
 
Bei nem refsystem ist es folgendermaßen:

MYSQL Tabelle:
Jeder Geworbene User erhält die Benutzerid seines Werbers in die Werber-Id tabelle.

Wenn wir das haben, wird bei einer aufstellung der einzelnen ebenen sich an den werber ids abgehangelt. Ein Beispiel kann ich dir gern per pn oder so zusenden. Ist auf den ersten Blick komplizierter als es in wirklichkeit ist.

mfg
caschti84
 
Aber wie funktioniert das in den Scripten wie Jagusch, etc.???
Wenn du dir dieses Billigscript als Vorbild nehmen willst, dann Gut Nacht :roll:

Du hast mehrere Möglichkeiten, die alle Vor- und Nachteile haben:
  • caschti84's Variante ist wohl die gebräuchliste, aber bei großen Downlines tut das dem Server nicht gut, weil du x Queries brauchst, wenn du nur den Ref in der x-ten Ebene haben willst.
  • die - meiner Meinung nach - beste Möglichkeit ist eine Ref-Tabelle, die jedem Ref einen Werber pro jeweilige Ebene zuordnet. Du kommst somit mit nur einer Query an entfernte Ebenen und hast noch den Vorteil, dass du Refback für alle Ebenen noch als "Abfallprodukt" gratis dazuerhältst. Nachteil der Sache, dass ein Umschreiben der Referal-Struktur enorm kompliziert (in einem richtigen Empfehlungssystem aber niemals erforderlich) ist.
 
@Hacker:

Könntest du mir per PM oder auch hier online ein Spiel zu den beiden geben...ich blick da nicht ganz durch. :(

Und ja, ich kenn mich mit PHP und MySQL aus ;)
 
Könntest du mir per PM oder auch hier online ein Spiel zu den beiden geben...ich blick da nicht ganz durch. :(
Konkretes Beispiel:
User 1 hat User 2 und User 3 geworben.
User 3 hat wiederum User 5 geworben.
User 4 ist ohne Werber angemeldet.

WerberID in der Usertabelle vermerken:


Eigene Referal-Tabelle:
 
Zuletzt bearbeitet:
OK, ich hab mir nun eure Beispiele durchgesehen und frag mich nun, ob man das nicht auch so lösen könnte (in einer eigenen Ref-Tabelle):

ref / werber1 / werber 2 / werber 3 / verdienst1 / verdienst2 / verdienst3

Und wenn man Gesamtrefverdienst von einem beliebigen Werber haben will, braucht man ja nur alle Felder "werber1", "werber2", "werber3" suchen, wo der Name drinnensteht, dann den jeweiligen Verdienst addieren...

Oder hab ich da einen groben Denkfehler??
 
Ich nutze folgendes Refsystem:

Tabelle refs:
userid | level | werber
1 | 1 | 0
2 | 1 | 1
3 | 1 | 2
3 | 2 | 1
4 | 1 | 1

Tabelle user
id | username
1 | test
2 | test2
3 | test3
4 | test4

man braucht etwas einarbeitungszeit, das läuft aber gut. Ich lese damit in einem Script eine Downline über 15 Ebenen in einer Query ein :D

Dein Lösungsansatz würde ziemlich viele Querys benötigen, was eine große Belastung für den Server werden kann.
 
[...]und frag mich nun, ob man das nicht auch so lösen könnte (in einer eigenen Ref-Tabelle):

ref / werber1 / werber 2 / werber 3 / verdienst1 / verdienst2 / verdienst3
Es kommt meinem Ansatz schon näher, nur hast du noch das Problem, dass die Refebenen fest vorgegeben sind.
Du kannst damit einem Ref X schnell seine Werber anzeigen. Willst du Werber Y alle seine Refs auflisten, reicht zwar eine Query, hastd aber pro Ebene eine Bedingung in der WHERE-Klausel.
Probleme beim Umschreiben oder Aufrücken ("Downline-Bruch" bei Abmeldung eines Users) hast du wie mit meinem Vorschlag genauso.

Wie schon tleilax im Crashforum-Thread gesagt hatte (hat er doch ? - afair), gibt es keine perfekte Lösung, sondern es kommt immer drauf an, was man alles für Funktionen von seinem System fordert.
 
Ich habe dazu auch mal eine Frage:
Angenommen ich habe 9 User im System:

ID ##Name ## Werber
-----------------------
1 ## User1 ## --
2 ## User2 ## 1
3 ## User3 ## 1
4 ## User4 ## 3
5 ## User5 ## 4
6 ## User6 ## 1
7 ## User7 ## 6
8 ## User8 ## 6
9 ## User9 ## --

Wenn ich jetzt alle Refs von User1 abfragen will ist das ja sehr einfach mit "WHERE Werber = 1" zu lösen. Aber wie mache ich das denn umgekehrt, sprich: Wie kann ich die Werber aufsteigend von User5 anzeigen, damit sowas dabei herraus kommt:
User1
+User3
++User4
+++User5
?

Renegade
 
Zuletzt bearbeitet:
Angenommen ich habe 9 User im System:
Ich nehm an, die haben auch 9 verschiedene UserIDs :mrgreen:
Wie kann ich die Werber aufsteigend von User5 anzeigen, damit sowas dabei herraus kommt: [...] ?
Wie schon angesprochen, rekursiv durcharbeiten:
PHP:
function get_werber_tree($refid)
{
  $werber=get_werber($refid);
  if($werber)
    return $werber." ".get_werber_tree($werber);
  else
    return "";
}