Dominic Nebe: Dringend: Doppelschleife...

moin!
vorab: das ganze muss bis heut abend fertig sein! :-(

also, das hab ich schon fertig:
es is ne mysql-tabelle, in der verschiedene werte stehn.
mitunter ist dort 'user' und 'werber' zu finden.
jeder angemeldete user, der von einem bereits vorhanden mitglied geworben wurde, hat den namen des werbers im datenfeld 'werber' stehn. -logisch!

nun brauch ich eine verzwickte schleife, die zuerst alle usernamen ermittelt. das wäre noch kein problem...
danach sollen nochmal einträge durchgeschaut werden. dabei soll den usern die anzahl von usern zugeordnet werden, die sie schon geworben haben.
am schluss noch eine dritte schleife:
diese soll die 15 user (aus)sortieren, sodass dann sowas ausgegeben werden kann:

Die Bestenliste:
1.) User_mit_meisten_refs : 50
2.) User_mit_fast_meisten_refs : 40
3.) User_mit_vielen_refs : 30
4.) usw...

danke, für Eure hilfe!

  1. moin auch

    wie wärs mit folgendem:

    $query=mysql_query("select user from users where werber!=''");
    $i=0;
    while($row=mysql_fetch_assoc($query))
    {
      $geworben=mysql_query("select user from users where werber='".$row['user']."'");
      $geworben=mysql_num_rows($geworben);
      $user[$i]['user']=$row['user'];
      $user[$i]['werber']=$geworben;
      $i++;
    }

    so, damit hättest du schonmal alle in einem arra, dann brauchst das nur noch sortieren zu lassen, aber das steht ja dann wieder in der php-doku ;)

    gruß

    1. Hallo,

      ich hoffe, ich irre mich nicht, wenn ich behaupte, dass das in einem einzigen SQL-Statement zu machen geht mit count und group by.

      Gruppieren muss man dann über den Werbernamen, denn der kommt ja häufiger vor. Wen derjenige geworben hat, ist Dir doch eigentlich wurscht, oder? Oder kann jeder jeden mehrmals werben?

      Grüße

      Chris (C)

  2. Hallo,

    moin!
    vorab: das ganze muss bis heut abend fertig sein! :-(

    Dann sollte man früher anfangen!

    danach sollen nochmal einträge durchgeschaut werden. dabei soll den usern die anzahl von usern zugeordnet werden, die sie schon geworben haben.

    Ich würde sagen du durchläufst alle User Namen die du in Schritt ein geholt hast und zählst wie oft sie als Werber auftauchen:
    select count(*) from table_name where werber_spalte = user_name

    am schluss noch eine dritte schleife:
    diese soll die 15 user (aus)sortieren, sodass dann sowas ausgegeben werden kann:

    Welche 15 User und wonach aussortieren?

    Gruß,
    Henning

    1. ... Ich würde sagen du durchläufst alle User Namen die du in Schritt ein geholt hast und zählst wie oft sie als Werber auftauchen:
      select count(*) from table_name where werber_spalte = user_name

      OK

      am schluss noch eine dritte schleife:
      diese soll die 15 user (aus)sortieren, sodass dann sowas ausgegeben werden kann:

      Welche 15 User und wonach aussortieren?

      die user mit den meisten geworbenen usern sollten in eine reihenfolge gebracht werden, sodass der user an stelle 1 steht, der die meisten geworben hat.

      1. Hallo,

        die user mit den meisten geworbenen usern sollten in eine reihenfolge gebracht werden, sodass der user an stelle 1 steht, der die meisten geworben hat.

        Wie in einem der anderen Postings schon erwähnt. Die Ergebnisse packst du in ein Array mit Username und zugehöriger Anzahl der Werbungen. Wie du die bekommst weißt du ja schon. Dieses Array sortierst du dann nur nach der Anzahl der Werbungen und gibst es aus.

        Gruß,
        Henning

  3. Moin
    Schreibe die Daten in ein Array und arbeit mit den Arrays weiter.
    Wenn Du es nur über ne Abfrage löst "vergisst" er irgendwann die ergebnisse!
    Fertige lösung hast Du nicht erwartet oder :-)?

    Viele Grüße TomIRL

  4. Hallöchen nochmal,

    hat mir ja nun keine Ruhe gelassen, da ich mich doch gerade nebenbei aktiv in MySQL-SQL übe...

    Select ID_TEST, ZAHL, count(ZAHL) as anzahl from TEST group by ZAHL order by anzahl desc;

    So funktioniert das wie versprochen mit einem SQL-Statement.

    in Zahl steht jetzt hier der Werber, ist ja egal obs eine Nummer (Fremdschlüssel) oder ein Direktkandidat ist. Wenn Du nun noch die übrigen Daten des Werbers haben willst, baust Du Dir einfach einen Selbstbezug über die ID des Werbers auf, indem Du die selbe Tabelle unter einem Alias ein zweites Mal eröffnest.

    Grüße

    Chris (C)