Patch: Sortierung in diversen Listen anpassen

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!

  • Hier ist ein Patch, der dafür sorgt, dass die Tabelle der Mitspieler nicht mehr alphabetisch, sondern gemäß Punkte sortiert werden.
    Dazu musste der Punkte-Stand mittels LEFT-JOIN in die Hauptabfrage einfließen, um nach ihr sortieren zu können. Die Einzelabfrage des Punktestandes konnte dann entfallen.


    Das komische Konstrukt mit "<<< __EOT__" und "__EOT__;" ist ein sogenanntes "here document", wobei der frei wählbare Marker EOT = End-Of-Text bedeutet.. Alles dazwischen wird als mehrzeilige Zeichenkette betrachtet. Ich empfinde es viel übersichtlicher als die vielen Zeichenketten-Operationen. Das ganze birgt aber eine Falle: PHP verlangt, dass der Ende-Marker (hier "__EOT__;" ganz alleine in einer Zeile steht und *NICHT* eingerückt ist.


    Nachtrag:
    Beim Stöbern in diesem Forum habe ich gerade "Rangliste: Auf einen Blick ..." entdeckt. Dieses macht den Patch evtl unnötig. Ich werde ihn aber bei mir belassen. Dann haben wir halt ne 2.Übersicht, die nach Punkten sortiert ist und ein wenig optimierter arbeitet.

  • Diesmal geht es um die Tipp-Übersicht. Ich finde es interessanter (werde mir aber noch die Rückmeldung der Mitspieler einholen), wenn die Tipps nach dem Tipp-Ergebnis sortiert sind anstatt alphabetisch nach dem Namen des Spielers. So kann man viel schneller Extrem-Tipps und andere Ausreißer ausmachen und auch sehen, wer dasselbe getippt hat.


    Daher wird die Tabelle nach Tor-Differenz sortiert und bei Gleichheit nach der Anzahl der Tore.
    Der Patch hierzu:

  • @Wiimm


    Ich hab mal den Titel angepasst - hoffe ist in Ordnung

    Zufrieden mit dem Script und dem Support? Möchtest du uns unterstützen?

    Dann könntest du etwas
    SPENDEN


    *** Benutze die Suchfunktion und zeige Eigeninitiative ***
    *** Bitte fülle deine Profildaten aus, sonst können wir dir nicht helfen! ***
    *** Wenn dir der Beitrag eines Users geholfen hat, tut ein Klick auf den Gefällt-Button nicht weh ***

  • finde ich super. bei dem spiel gestern kam dann auch die frage auf, ob man nicht auf der seite auch darstellen könnte, wie oft 1:0, 2:1 etc getippt wurde, also die häufigkeit der tipps. könnte bei den abgegeben tipps bei dem spiel stehen.

  • Ich habe den Patch für die Tipp-Übersicht ergänzt:

    Code
    1. ORDER BY tipps.gast - tipps.heim,
    2. tipps.gast * tipps.gast - tipps.heim * tipps.heim,
    3. tipps.heim DESC,
    4. name

    Die erste Zeile (höchste Priorität) sorgt dafür, dass höhere Differenzen ganz nach oben bzw. ganz nach unten rutschen. Die zweite Zeile sortiert 4:1 vor 3:0, aber 1:4 nach 0:3. Das macht die Tabelle symmetrisch. Die dritte Zeile ist relevant für Unentschieden (1:1 vor 0:0) und die letzte Zeile sortiert dann bei identischen Tipp nach Namen.

  • Danke nochmals hierfür. was man natürlich nun vor den spielen schon sieht ist wer quasi für welche mannschaft getippt hat.
    steht ein spieler auf ersten seite ganz oben dann hat er wohl für die heimmannschaft getippt und jemand der auf der letzten seite steht eben für die gastmannschaft...

  • Super Tipps!


    Aber bekomme ich noch eine Sortierung in sieger.php hin, wenn die Leute die gleiche Punktzahl haben? Dann ist es irgendwie völlig zufällig gewürfelt. Kann man Leute mit gleicher Punktzahl nicht nach Alphabet des Usernamens sortieren?
    oder zur Not noch Reihenfolge der Registrierung?

  • Hallo,


    ja, die Rangliste sollte nach diesen Kriterien sortiert sein:


    * Punkteanzahl
    * Anzahl richtiger Tipps
    * Anzahl Tipps mit richtiger Tordifferenz
    * Anzahl Tipps mit richtiger Tendenz
    * dann kann man immer noch alphabetisch sortieren


    Das wäre m.M. nach super :-)
    Danke!

  • Sollte machbar sein. Kann mir jemand sagen, welche Felder was bedeuten:

  • Hätte ich auch selbst drauf kommen könne, Danke Kurt!


    Wir reden über Rangliste / Auf einen Blick?
    Eine erste Recherche ergab, dass ich hierfür die globale Funktion returnRanglisteKompakt() anfassen muss. Dieses hat dann Auswirkungen auf diverse Tabellen. Evtl.muss ich auch die Rangberechnung anpassen.


    Allerdings warte ich erstmal den Bug Fix mit Spiel 14 ab, da ich sonst keine vernünftige Tabelle habe, an der ich die Sortierung verifizieren kann (Fast jeder Mitspieler hat einen eigenen Rang).

  • Die Tabelle der Mitspieler wird jetzt anders sortiert, da der an anderer Stelle berechnet Rang berücksichtigt wird. Der ifnull()-Teil wird benötigt, um Spieler ohne Tipp ans Tabellenende zu bannen. Der erste Post ist entsprechend aktualisiert.

    Code
    1. ORDER BY ifnull(r.rang,999999999), u.usr


    Und da sind wir schon beim noch offenen Thema. Die Ränge werden durch diverse Funktionen vorberechnet. Eine einfache Modifikation der SQL-Abfrage ist daher nicht möglich. Es müssten die Funktionen angepasst werden, was zusätzliche Einarbeitung in den PHP-Code benötigt. Und dieses scheue ich.


    Außerdem berücksichtigen dieses Funktionen doch den Wunsch nach ...
    * Punkteanzahl
    * Anzahl richtiger Tipps
    * Anzahl Tipps mit richtiger Tordifferenz
    * Anzahl Tipps mit richtiger Tendenz
    * dann kann man immer noch alphabetisch sortieren
    ..., oder irre ich mich?


    Evtl. reden wirr auch aneinander vorbei und meinen unterschiedliche Statistiken.
    Daher meine Frage: Welche Statistik meint ihr?

  • Ich rede immer von der sieger.php, die auf HOME als erstes angezeigt wird.


    Aber mach dir keine Arbeit! Wenn man es nicht alleine mit dem Quellcode dieser Datei ändern kann ist das alles zuviel. Und nachher bedenkt man was nicht und et läuft nichts mehr. ;-)

  • Da geht doch der berechnete Rang mit ein. Und wenn ich Rangliste / Auf einen Blick richtig deute, dann gehen Dinge wie "Anzahl richtiger Tipps" in die Sortierung als Sortierfaktor mit ein. Ich kann zumindest bei unserem kleinen 15-Personen-Tipp im Moment nichts gegenteiliges feststellen.


    Aber wie gesagt: Änderungen an diesen vorgerechneten Rängen bedeuten für mich extra Einarbeitungszeit, die ich eher nicht aufbringen möchte.

  • Guten Morgen :-)


    sorry für die späte Antwort - musste mich erst vom England-Match gestern erholen :-)


    Also, soweit ich das heute überblicke, stimmt die "Rangliste - Auf einen Blick" so wie oben gewünscht mit den Kriterien. Meine Tipprunde besteht aus 128 Leuten - und da passt das.
    Da ist also nichts mehr zu tun.


    Die sieger.php unterscheidet nicht zwischen ex-aequo-Plätzen - aber damit kann ich leben.


    Danke für die Unterstützung... für mich passt das so...

  • Und ist es beim Treppchen noch kurzfristig möglich, dass wenn mehrere die gleiche Punktezahl haben, dass sie dann auch den gleichen Platz haben?

    Den Gedanken hatte ich auch schon. Ich bin aber der falsche Ansprechpartner, da ich nicht zum Entwickler-Team gehöre und mich erst in die Tiefen einarbeiten müsste.

  • @ Wiimm
    mal wieder
    wartet auf einen fix für Ergebnisse spiel 14


    wenn die Ergebnisse für die spiele geladen werden werden als erstes die alten Ergebnisse gelöscht und nicht nur die alles was relevant ist wird gelöscht also auch wenn ein Ergebnis im spiel 14 schon drin steht (das war dann noch vom testen ) sollte aber schon lange weg sein da die Tabellen schon vor Spielbeginn einige male geleert wurde
    im dump steht als erstes dieses


    TRUNCATE TABLE `emtipp_ergebnisse`;
    TRUNCATE TABLE `emtipp_tore`;
    TRUNCATE TABLE `emtipp_spielerstat`;


    auserdem verführt mir Wimme die User viel zu viel zum herum Murksen im code
    das Tippspiel läuft ohne dieses herumgefummel eigentlich richtig und ohne Fehler

    Zufrieden mit dem Script und dem Support?
    Möchtest du uns unterstützen?
    Dann könntest du etwas

              Spenden