Brauche hilfe bei einer referalstufen rechnung

GPN

Grünschnabel
Hallo,
hab mich nun mal endschloßen hier hilfe zu suchen.

ALSO... ich habe ein paidmail script gekauft das teil läuft mit 3 referal stufen.
Zur info: referals sind geworbene mitglieder. d.h. wen sich einer anmeldet kann er über einen link andere mitglieder werben und verdient an denen mit.

Ich hätte das ganze gerne mit 15 stufen, hab auch schon alles soweit erweitert nur die letzte datei da blick ich nicht richtig durch.
Ich glaube leute die ahnung haben werden sofort sehen wie das script da aufzählt.

Ich werde den Teil den ich nicht verstehe mal posten in der hoffnung jemand kann mir das erweitern.

PHP:
$check_resultref1 = mysql_query("SELECT * FROM user WHERE geworbenvon = '$USER'");

$refs1 = mysql_num_rows($check_resultref1);

if($refs1 >= 1){

$j = 0;
$refs2c = 0;
$refs3c = 0;

while ($j < $refs1)
{
$refs2 = 0;
		$eb2 = mysql_result($check_resultref1, $j, "usr");
		$check_resultref2 = mysql_query("SELECT * FROM user WHERE geworbenvon = '$eb2'");
		$refs2 = mysql_num_rows($check_resultref2);
		$refs2c = $refs2c+$refs2;
			$x = 0;
			if($refs2 >= 1){
				while ($x < $refs2)
				{
				$refs3 = 0;
					$eb3 = mysql_result($check_resultref2, $x, "usr");
					$check_resultref3 = mysql_query("SELECT * FROM user WHERE geworbenvon = '$eb3'");
					$refs3 = mysql_num_rows($check_resultref3);
					$refs3c = $refs3c+$refs3;
				$x++;
					}
				}


	$j++;
}

}

$refs2 = $refs2c;
$refs3 = $refs3c;

$benutzerzahl = mysql_query("SELECT * FROM user"); 
$benutzer = mysql_num_rows($benutzerzahl);
unset($benutzerzahl);

Schonmal danke an alle die sich mit diesem Problem befassen ;)
 
lol... ne ganze menge ... leider.
ca. 200 €

leider kann ich es nicht selber sonst hätte ich es schon selber gemacht.
 
Auch wenn es Dir jetzt erstmal nicht bei Deinem Problem hilft: Teilst Du mir den Autor mit? Die Funktionalität stelle ich ersteinmal nicht in Frage, allerdings die Performance. Jetzt sind es erstmal nur 3 Stufen, aber wenn man den Code auf die bisherige Art auf 15 Stufen erweitern würde, wird's grausam. Das Script sieht aus, als ob der Urheber sich maximal 2 Monate mit PHP beschäftigt hat.

snuu
 
Ich kann mich snuu da nur anschliessen. Von Fehlerbehandlung bzw unterdükcne / abfangen malganz abgesehen, gehören meines erachtens zu einem gekauften Skript Kommentare, das man weiss wo etwas passiert.
Auch glaube ich das es bei 15 refs ins endlose an Rechenzeit geht und sich die Frage stellt ob es in Sicht auf Zukunft und viele User die viele Werben sinn macht, dieses Skript überhaupt zu erweitern.

Ansonsten musst du nur, so wie ich das sehe den inneren Teil
PHP:
$x = 0;
            if($refs2 >= 1){
                while ($x < $refs2)
                {
                $refs3 = 0;
                    $eb3 = mysql_result($check_resultref2, $x, "usr");
                    $check_resultref3 = mysql_query("SELECT * FROM user WHERE geworbenvon = '$eb3'");
                    $refs3 = mysql_num_rows($check_resultref3);
                    $refs3c = $refs3c+$refs3;
                $x++;
                    }
                }

weitere 12 mal ineinander verschachteln. ... was das für die Anzahl der durchläufe heisst kannst du dir ja selbst ausrechnen... ;)
 
mhmm ja aber genau das verschachteln macht mir noch etwas probleme.
ich hasse diese klammern usw.

kann ich den teil den du rauskopiert hast einfach untereinander setzen oder muss ich da noch auf klammern achten
 
Naja die Klammern werden gesetzt wie überall,
einfach jeden Anweisungsblock in { }einschliessen.
Setze dir doch die öffnenden und schliessenden Klammern untereinander,
quasi so:

PHP:
while () {
 asd  
 asd
 asd
 asd
}

//Dann besser so

while ()
{
 bla
  bla
 bla
}

Ob man das einfach so kopieren kann keine Ahnung, das war nur so eine Vermutung. Da ich nicht wikrlich weiss wie das ganze Skript funktioniert ist das schwierig zu sagen. Und bevor ich mich da reinarbeite würde ich eher ein neues schreiben, bzw. mal ein Konzept überlegen wie man das für 15 refs am geschicktesten Aufzieht...
 
Das generelle Problem ist wohl, dass die Referals hierarchisch gespeichert sind. Da in MySQL allerdings (noch) keine hierarchischen SQL-Abfragen, wie zum Beispiel in Oracle möglich sind (connect by prior ...), werden die möglichen Abfragen recht umständlich. Man hätte die Daten von Beginn an anders speichern müssen, um es performanter zu gestalten. Aber selbst unter diesen Bedingungen ist der momentane Code noch stark verbesserungsbedürftig.

Mich interessiert daher immernoch, wer so etwas verkauft.

snuu
 
Also ich habs mal mit Rekursion versucht.

Meine Tabelle sieht folgendermassen aus:

2 Spalten (id, geworbenvon)

Man kann es natürlich noch erweitern, was das betrifft.

Nun der Code:
PHP:
<?php
include_once('database.php');

function countReferals($stufen, $user_id) {
	
	$query = "SELECT `id` FROM `user` WHERE `geworbenvon` = '$user_id'";

	$result = mysql_query($query);
	
	$igesamt = 0;
	if($stufen >= 1) {
		$stufen--;
		while($user = mysql_fetch_array($result)) {
			$igesamt++;
			$igesamt += countReferals($stufen, $user['id']);
		}
	} else {
		$igesamt = mysql_num_rows($result);
	}
	return $igesamt;
}

$stufen = 3;
$anzahl = countReferals($stufen, 1);
echo "$anzahl Mitglieder befinden sich unter dir in einem System mit $stufen Stufen";

?>

In $anzahl steht nun die Menge der Leute, die sich unter einem befinden. Ich hab es gerade mit 3 Stufen gemacht. Somit kannst du beliebig viele Stufen einbringen.

Das macht 0 Euro (hab ja nicht kommentiert) ;) Maximal wären es vielleicht 10 Euro. Solange hat es ja nicht gedauert.

Hoff' nur, dass es alles richtig ist. Hab das mal getestet und der hatte mir die Richtige Zahl ausgespuckt. Dachte ich zumindest :-)

OT: Wie kann ich eigentlich hier in der Textbox ein Tab machen. Wenn ich den Code reinkopiere gehts ja, aber ich weiß beim besten Willen nicht, wie ich ein Tab so machen kann, wenn ich den Code "OnTheFly" hier reinschreibe?
 
Zuletzt bearbeitet:
Zurück