Tippübersicht nach erreichten Punkten des Spieltages sortieren

Ich habe einen Blog Artikel verfasst - Wie benutze ich die Suche richtig - Bitte diesen beachten und auch umsetzen bevor Ihr ein Neues Thema eröffnet!

  • Hallo zusammen,


    danke nochmal an das Team, dass auch dieses Jahrw wieder alles super geklappt hat. Ich schick nochmal ne ne Spende per Paypal rüber :-)


    Nun zum obigen Thema:
    Wohl wissend dass es zu diesem Thema bereits einen Thread gibt (Alter Thread) möchte ich hierzu nochmal eine kleine Zusammenfassung geben. Ich selbst bin kein PHP-Spezialist und musste daher auch trotz der Anleitung relativ viel rumprobieren :-). Vielleicht haben es mit meiner Zusammenfassung andere "Noobs" etwas einfacher ;-)


    Step 1 - Sortierfunktion kopieren und leicht abändern


    - Verzeichnis /include/
    - Datei functions.inc.php


    Code
    1. # Sortierfunktion für die Liga-Tabellefunction sort_tabelle ($a, $b){ if ($a['punkte'] == $b['punkte']) { if ($a['differenz'] == $b['differenz']) { if ($a['tore'] == $b['tore']) { if ($a['siege'] < $b['siege']) { return ($a['spiele'] < $b['spiele']) ? -1 : 1; } return ($a['siege'] > $b['siege']) ? -1 : 1; } return ($a['tore'] > $b['tore']) ? -1 : 1; } return ($a['differenz'] > $b['differenz']) ? -1 : 1; } return ($a['punkte'] > $b['punkte']) ? -1 : 1;}



    - Obenstehende Funktion kopieren und unter dieser selbst nochmal einfügen


    - In der kopierten Funktion die nachstehende Zeile


    Code
    1. function sort_tabelle ($a, $b)

    wie folgt abändern:

    Code
    1. function sort_tip_overview ($a, $b)


    - Datei speichern und Step 1 ist erledigt :-)



    Step 2 - Sortierung in tipps.php ausführen

    - Verzeichnis /content/
    - Datei tipps.php



    - Die hier angezeigte Zeile 873 ein genau dieser Stelle einfügen (Die Zeilennummer muss nicht stimmen)


    - Datei speichern



    Bei mir funktioniert es so wunderbar! Sofern PHP-Spezialisten noch etwas zu verbessern hätten - jederzeit gerne!


    Danke auch an Sören, der mir durch seinen Post die Steilvorlage gegeben hat :-)


    Viele Grüße


    Butze

  • vor Sortieraufruf in tipps.php

    PHP
    1. // punkte_sum in Tipps Array aufnehmen if (isset($tipps) && is_array($tipps)) { foreach ($tipps as $user => $eigeneTipps) { $tipps[$user]['punkte_sum'] = 0; foreach ($spiele as $id => $values) { $sp_pts = getPunkte($user, $id); // Punkte berechnen $tipps[$user]['punkte_sum'] = $tipps[$user]['punkte_sum'] + $sp_pts; } } }uasort ($tipps, 'sort_tip_overview'); #Neue Sortierung


    sort_tip_overview folgendermaßen ändern:


    PHP
    1. # Sortierfunktion für die Tippübersicht-Tabelle
    2. function sort_tip_overview ($a, $b){
    3. if ($a['punkte_sum'] == $b['punkte_sum']) {
    4. if ($a['count'] < $b['count']) {
    5. return ($a['name'] < $b['name']) ? -1 : 1;
    6. }
    7. return ($a['count'] < $b['count']) ? -1 : 1;
    8. }
    9. return ($a['punkte_sum'] > $b['punkte_sum']) ? -1 : 1;
    10. }


    Dann sollte es klappen

  • Danke patchstar für die Korrektur...


    ...seltsam ist nun, dass es bei mir zwar am ersten Spieltag (sowohl in der ersten
    Fassung wie auch in der zweiten Fassung) funktioniert hat, am zweiten Spieltag
    passt es nicht. Die Sortierung hat die gleiche Reihenfolge der Spieler vom ersten
    Spieltag. Kann jemand helfen? Irgendwo ist noch der "Hund"
    drin :-)


    Danke mal im Voraus :-)


    Butze

  • ah ok, ich seh grad, dass in $tipps[$data['u_id']]['punkte_total'] leider nicht die aktuellen Punkte des Spieltages drin stehen.
    Ich habe meinen Beitrag oben abgeändert.


    Sortierfunktion muss geändert werden und vorher müssen aber erstmal die Punkte addiert werden. Das geschieht eigentlich erst weiter unten im Code.
    Von daher muss über

    Code
    1. uasort ($tipps, 'sort_tip_overview'); #Neue Sortierung

    noch folgende Schleife




    Code
    1. if (isset($tipps) && is_array($tipps)) {
    2. foreach ($tipps as $user => $eigeneTipps) {
    3. $tipps[$user]['punkte_sum'] = 0;
    4. foreach ($spiele as $id => $values) {
    5. $sp_pts = getPunkte($user, $id); // Punkte berechnen
    6. $tipps[$user]['punkte_sum'] = $tipps[$user]['punkte_sum'] + $sp_pts;
    7. }
    8. }
    9. }
  • @'patchstar
    nach dieser änderung klapps mit dem 1.+ 2.Spieltag, schauen wir mal in 14 tagen beim 3.Spieltag.


    Auf jedenfall ein großes Dankeschön für deine Bemühungen. :thumbsup:

    Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

  • Hallo,


    dieses Thema interessiert mich auch brennend. Bevor ich anfange die ganzen Schnipsel einzufügen …


    Funktioniert das jetzt wie oben beschrieben?