Leider is in der Berechnung der Platzierung noch ein Fehler drin, der sich bei einigen Ranglisten bemerkbar macht.
Die Plätze werden einfach durchnummeriert. Bei gleichen Tipps/Ergebnissen/Differenzen/Tendenzen/Punkte wird dennoch der Platz in der Datenbank hochgezählt.
Das wird zwar immer unwahrscheinlicher, je länger das Turnier läuft, dass ein Rang mehrere Leute gleichzeitig haben, könnte aber gerade zum Schluss auch Probleme geben.
Das betrifft dann alle Ranglisten, die diese Funktion zur Berechnung des Platzes nutzen (z.B. alle Gruppenranglisten).
Bitte in der Datei "include/inc.functions.php" nach "function CalcRanglistenRangNeu($liste)" suchen (bei mir ab Zeile 1895) und die ganze Funktion durch folgenden Code austauschen:
- function CalcRanglistenRangNeu($liste) {
- $count = count($liste);
- $rang = 1;
- $rangTemp = 1;
- for ($key = 0; $key < $count; $key++)
- {
- if ($key == 0) {
- $liste[$key]['rang'] = 1;
- } else {
- $bSame = false;
- if ($liste[$key]['punkte'] == $liste[$key-1]['punkte'])
- {
- #if ($liste[$key]['tipps'] == $liste[$key-1]['tipps'])
- #{
- if ($liste[$key]['ergebnis'] == $liste[$key-1]['ergebnis'])
- {
- if ($liste[$key]['differenz'] == $liste[$key-1]['differenz'])
- {
- if ($liste[$key]['tendenz'] == $liste[$key-1]['tendenz'])
- {
- if ($liste[$key]['bonus'] == $liste[$key-1]['bonus'])
- {
- $bSame=true;
- }
- }
- }
- }
- #}
- }
- }
- if (!$bSame) {
- $rang = $rangTemp;
- }
- $liste[$key]['rang'] = $rang;
- $rangTemp++;
- }
- return $liste;
- }
Noch ein Hinweis zu den 3 auskommentierten Zeilen (#) in diesem Code:
--> auskommentiert lassen, wenn man die Anzahl der Tipps nicht in die Rangfolge mit einfließen lassen will
Das gab zur WM schon große Diskussion, soll aber jeder selbst entscheiden.
Die Berechnung wird zwar auch automatisch irgendwann angestoßen, kann aber durch "Admin/DB Refresh" auch manuell ausgelöst werden.
EDIT: Wer die Sortierung ohne der Berücksichtigung der Tippanzahl nutzen möchte, muss zusätzlich auch noch die Datei "include/inc.functions.admin.php" ausgetauschen und den DB Refresh angestoßen.
- function getRang($tar,$toldar,$tarplatz) {
- if ($tar['punkte'] == $toldar['punkte']) {
- # if ($tar['tipps'] == $toldar['tipps']) {
- if ($tar['ergebnis'] == $toldar['ergebnis']) {
- if ($tar['differenz'] == $toldar['differenz']) {
- if ($tar['tendenz'] == $toldar['tendenz']) {
- if ($tar['bonus'] == $toldar['bonus']) {
- return $tarplatz;
- }
- return -1;
- }
- return -1;
- }
- return -1;
- }
- return -1;
- # }
- # return -1;
- }
- return -1;
- }