Referrals eines Users ermitteln

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Referrals eines Users ermitteln

    Moin,

    ich habe mir mal überlegt wie ich am besten die Anzahl der User ermitteln kann welche von einem anderen User bzw Mitglied meiner Seite geworbenen wurden, da ganze erstmal auf 2 Ebenen ...

    Das ganze sollte normal über eine Datenbank laufen, ich hab zu Testzwecken aber erstmal nen schönes Array genommen ...

    Quellcode

    1. # User anlegen
    2. $users[] = array( '1', 'Hans', '' );
    3. $users[] = array( '2', 'Manfred', '1' );
    4. $users[] = array( '3', 'Uli', '2' );
    5. $users[] = array( '4', 'Petra', '2' );


    Nachfolgend meine Idee für die Funktion die, die Referrals wahlweise der Ebene 1 oder 2 berechnet.

    Quellcode

    1. # Funktion zum berechnen der Referrals eines Users
    2. function getReferrals( $level, $userid, $level_ids = '' ){
    3. global $users;
    4. # Ebene 1
    5. if( $level == '1' ){
    6. $userid = (int) $userid;
    7. # Referrals Ebene 1 ermitteln
    8. foreach( $users AS $user ){
    9. if( $user[2] == $userid ){
    10. $referrals++;
    11. $ids[] = $user[0];
    12. }
    13. }
    14. return array( $referrals, $ids );
    15. }
    16. # Ebene 2
    17. if( $level == '2' ){
    18. $userid = (int) $userid;
    19. # Referrals Ebene 1 ermitteln
    20. foreach( $users AS $user ){
    21. if( count( $level_ids ) > 0 ){
    22. foreach( $level_ids AS $level_id ){
    23. if( $user[2] == $level_id ){
    24. $referrals++;
    25. }
    26. }
    27. }
    28. }
    29. return $referrals;
    30. }
    31. }
    Alles anzeigen


    Das ganze wird dann halt wie folgt ausgegeben ...

    Quellcode

    1. <table width="75%" border="0" style="font-size:11px; font-family:Verdana, Arial, Helvetica, sans-serif;">
    2. <tr>
    3. <td width="10%">&nbsp;<b>User ID</b></td>
    4. <td width="60%">&nbsp;<b>Username</b></td>
    5. <td width="15%">&nbsp;<b>Referrals Ebene 1</b></td>
    6. <td width="15%">&nbsp;<b>Referrals Ebene 2</b></td>
    7. </tr>
    8. <?php
    9. foreach( $users AS $user ){
    10. $referrals["level1"] = getReferrals( '1', $user[0] );
    11. /*
    12. echo "<pre>\n";
    13. print_r($referrals["level1"]);
    14. echo "</pre>\n";
    15. */
    16. $referrals["level2"] = getReferrals( '2', '', $referrals["level1"][1] );
    17. ?>
    18. <tr>
    19. <td width="10%">&nbsp;<?php echo $user[0]; ?></td>
    20. <td width="60%">&nbsp;<?php echo $user[1]; ?></td>
    21. <td width="15%">&nbsp;<?php echo empty( $referrals["level1"][0] ) ? '0' : $referrals["level1"][0]; ?></td>
    22. <td width="15%">&nbsp;<?php echo empty( $referrals["level2"] ) ? '0' : $referrals["level2"]; ?></td>
    23. </tr>
    24. <?php
    25. }
    26. ?>
    27. </table>
    Alles anzeigen


    Die Ausgabe sieht so aus:

    imagefire.net/image/84449c30d674.jpg

    Es geht jetzt auch nur drum ob das so am besten umgesetzt ist, sprich von der Last die durch dieses tolle Script erzeugt wird oder ob es überhaupt eine bessere Möglichkeit gibt. Und wie ist das wenn ich jetzt noch mit den Ebenen weiter gehen möchte sagen wir Ebene 3, 4 oder sogar bis Ebene 5 ...

    Vielen Dank schonmal ;)
  • Hirn Zerknitsching ohne Ende, hier in meiner Rübe ...

    Also nehmen wir mal an ich würde den ganzen Spaß so wie normal auch vorgestellt mit einer Datenbank betreiben, wäre das machbar wenn die Tabelle 'users' das Schema

    id | name | geworben_von

    haben, hätte irgendwie so?

    Ich steig da nämlich mal voll nicht durch finde keinen Ansatz, Halt oder was auch immer praktisch dachte ich an sowas wie, ich lese erstmal alle aus die von mir geworben wurden sprich ...

    Quellcode

    1. $db->query("SELECT `id`, `name`, `geworben_von` FROM `users` WHERE `geworben_von` = 'Torsten'");


    dann hab ich ja schonmal die erste Ebene :D , tja wäre ja schön wenn ich mir nun keinen Kopf mehr machen müsste aber ich will ja auch noch die Referals glaub ich aus Ebene 1253 haben nein sollte ein Witz sein ^^, sagen wir mal Ebene 5 nun dachte ich irgendwie in einer Schleife in irgendeiner einfach oder auch nicht wie soll man das erklären? Ich versuche es Bildlich zu schreiben -.-

    Also gehen wir mal davon aus das es um meine Wenigkeit geht ich hab zwei Leute direkt ...

    Name -> Seine Referals glaub ich
    Heinz -> 5
    Manfred -> 1

    also hab ich 2 Direkt Referals glaub ich und 6 auf Ebene 2 nun und halt so weiter, Alle Namen von Heinz Referals glaub ich und die von Manfred werden in nen Array geprügelt und dann geht es immer weiter, bis halt die maximal gewünschte Tiefe erreicht wurde und halt immer zusammenzählen ...

    Denkweise richtig? Selbst wenn die Umsetzung scheint irgendwie keine Lust auf mich zu haben ich probiere zwischenzeitlich an der Geschichte rum aber da kommt nur Bockmist bei rum oder er nach 2 Minuten fällt mir auf das dit Quark ist! :pinch: