Beiträge von patchstar

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!

    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. }

    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

    Mein 1und1 Cloud Server hat das selbe Problem. MySQL und Server arbeiten mit utc Zeit. Somit werden die Anstosszeiten zwar korrekt angezeigt, die User können aber 2 Stunden nach Anstoß noch tippen. Beim Versuch über plesk die Serverzeit zu ändern mit abschließendem Neustart ist mir der komplette Cloud Server abgeschmiert. 1und1 meinte es könnte sogar ein irreparabeler Schaden am Server sein. Am Montag will sich das nochmal ein Experte anschauen. Das wäre aber extrem ärgerlich da ich auf dem Server noch viele anderer Seiten und Services drauf laufen hatte. Also Vorsicht damit!


    Weiß jemand wie sich der MySQL Server auf die Timezone Europa/Berlin umstellen lässt?
    Die Lösung mit den +2 im SQL Befehl halte ich für nicht so glücklich.

    • es müssen mehrer SQL Befehle angepasst werden
    • was passiert bei Umstellung Sommer/Winterzeit? Muss dann alles auf +1 angepasst werden ?

    Also für mich ist in der functions.inc.php die ganze Funktion getMissingBonustipps nicht schlüssig. Mit der PHP Version hat das nichts zu tun.


    folgende Ersetzung sollte Abhilfe schaffen:


    ersetzte

    PHP
    1. function getMissingBonustipps($user_id){ global $_SESSION, $saison, $tbl; if (isset($_SESSION['s_user'])) { if ( ! isset($user_id)) { $user_id = $_SESSION['s_user']; } $complete_tipps = ""; // Zuerst alle IDs der Antworten auf type "Spieler" feststellen. Diese werden in der nächsten Abfrage ausgeschlossen $sql = "SELECT bid, subbid FROM ". $tbl['bonus_tipps'] ." WHERE liga = '". $saison['liga'] ."'" ." AND saison = ". $saison['jahr2'] ." AND usr = ". $user_id ." AND type = 'spieler'"; $query = mysql_query($sql); while ($row = mysql_fetch_array($query)) { $complete_tipps .= "(bf.id != ". $row['bid'] ." AND bf.subid != ". $row['subbid'] .") AND "; } if ($complete_tipps != "") { $complete_tipps = " (". substr($complete_tipps, 0, -5) .")"; } // Anzahl fehlende oder unvollständige Antworten auslesen $sql = "SELECT bf.id, bf.subid, bf.type, bp.date, bt.id AS bt_id, bt.type AS bt_type FROM ". $tbl['bonus_fragen'] ." AS bf" ." LEFT JOIN ". $tbl['bonus_punkte'] ." AS bp ON bp.bid = bf.id" ." LEFT JOIN ". $tbl['bonus_tipps'] ." AS bt ON (bt.bid = bf.id AND bt.subbid = bf.subid)" ." WHERE bf.liga = '". $saison['liga'] ."'" ." AND bf.saison = ". $saison['jahr2'] ." AND (bf.type != bt.type OR bt.type IS NULL)" . ($complete_tipps != "" ? " AND ". $complete_tipps : "") ." GROUP BY bf.id, bf.subid" ." HAVING bp.date > ". time(); $query = mysql_query($sql); $count_missing_tipps = mysql_num_rows($query); if ($count_missing_tipps > 0) { return $count_missing_tipps; } else { return FALSE; } } else { return FALSE; }}

    mit




    Ein kleiner Bug besteht jedoch noch. Sobald der Bonustipp abgegeben wurde, steht immer noch die falsche Anzahl drin.
    Erst nach erneutem Seitenaufruf steht die korrekte Anzahl drin.
    Problem hier: Die Abfrage nach der fehlenden Anzahl erfolgt vor der Speicherung des Tipps. Entweder müsste die Abfrage später erfolgen oder man lebt einfach damit smile-squared



    edit: das Thema wurde hier schon mal behandelt

    Wie oldi schon sagt, Fehler 500 kann alles mögliche sein.
    Schalte doch mal in der inc.config.php ganz unten das error_reporting an.
    Am besten gleich

    PHP
    1. error_reporting(0);


    mit


    PHP
    1. ini_set('display_startup_errors', 1);
    2. ini_set('display_errors', 1);
    3. error_reporting(-1);

    ersetzen





    Wenn du dann immer noch keine Fehlermeldung erhälst solltest du den error log in den PHP Einstellungen aktivieren und anschließend mal schauen was es ausspuckt

    Das kann ich leider nicht wirklich sagen.
    Irgendwas geht schief beim Rendern des Rückgabewertes. Ich weiß leider auch nicht wie die Jungs von xcript das programmiert haben.
    Das erscheint mir aus heutiger Sicht etwas zu kompliziert. Mit jQuery wäre das wesentlich einfacher und durchsichtiger gewesen.


    Das "uncaught exception: [object Object]" dürfte nicht kommen. Hier geht was schief.
    Leider ist der Fehler wenig aussagekräftig (ohne Zeilennummer und Datei)

    Also wie es aussieht wird der Tipp sauber bei dir gespeichert (auch ohne den Speichern Button)
    Aber die Punkte und der grüne Haken kommen bei dir nicht mehr. Da muss es was zerschossen haben.

    @alois12345
    Hast du vielleicht unabsichtlich einen JS Fehler drin?
    Schau doch einfach mal in deiner Browser Console oder mit Hilfe von Firebug (Addon für Firefox) ob alles glatt läuft.
    Bei der Tippabgabe wird ein Request an den Server abgesetzt, anschließend muss es eine Antwort geben (wie auf meinem Screenshot zu sehen).
    Wenn du Hilfe brauchst kannst du mir auch einfach mal den Link zu deinem Tippspiel schicken.

    Also 1x in der gruppen.content.php
    Suche

    PHP
    1. $query[] = " s.heim = '".$team."' OR s.gast = '".$team."' ";


    ersetze mit


    PHP
    1. $query[] = " (s.heim = '".$team."' OR s.gast = '".$team."') and type = 0 ";


    Und 2x in der inc.functions.php
    Finde


    PHP
    1. $query[] = " heim = '". $team ."' OR gast = '". $team ."' ";

    ersetze mit



    PHP
    1. $query[] = " (heim = '". $team ."' OR gast = '". $team ."') and type = 0 ";



    Das ganze hat keine Auswirkung auf Logiken für das weitere Turnier.
    Es handelt sich hier nur um SQL Abfragen für die Darstellung bzw. die "Was wäre wenn" Analyse
    Das "and type = 0" besagt, dass nur Gruppenspiele berücksichtigen werden sollen

    gibt es eine Möglichkeit bei denn Bonus Tipps die Punkte Staffelung zu deaktivieren?

    Trag doch einfach überall die selbe Anzahl an Punkten ein.


    Oder du löscht in der DB jeweils den zweiten und dritten Datensatz


    SQL
    1. DELETE FROM `emtipp_bonus_punkte` where id not in (select id from emtipp_bonus_punkte group by bid having min(date))

    Ungetestet, bitte vorher auf jeden Fall ein Backup machen.