Anzeige Toastmessage Bonustippsabgabe

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!

  • Hi @all,


    mir ist ein kleines Problem bei der Anzeige der Toastmessage "restliche Bonustipps" mit der Umstellung auf php7 untergekommen. Aufgefallen ist es mir erst, nachdem ist zwei Testuser mit am Laufen hatte.

    In meinem Tippspiel tippen wir nur auf den Deutschen Meister + die zwei fixen Absteiger. Tippt ein Testuser z.B. den Deutschen Meister, wird bei ihm die Anzahl noch zwei Bonustipps abzugeben, richtig angezeigt. Jetzt loggt der Testuser aus, ein anderer Testuser kommt rein und sieht, dass er auch nur noch zwei Bonustipps abgeben kann, obwohl er nicht getippt hat bislang. Mhhh... Sieht wohl nach einem Session-Problem bei mir aus. Ich hab den Zahl-Mod und einen DSGVO-Mod am Laufen. Im letzten Jahr unter der php5-Version lief das eigentlich perfekt, bin mir aber nicht mehr wirklich sicher.

    Die Datei sind die index.php und unter Content die bonustipps.php dafür massgebend. Ich kann absolut keinen Fehler feststellen! Kann das jemand nachvollziehen?

    Danke im Voraus.

  • Könntest du in der include/functions.inc.php mal nach der Funktion "getMissingBonustipps" suchen und über der ersten Abfrage einfach mal folgendes reinschreiben:


    Code
    1. echo var_dump($user_id);

    Dann einmal auf die Startseite gehen und nach der Aktualisierung die komplette Seite markieren. Da müsstest du so etwas in diese Richtung sehen:

    Zitat

    string(1) "1"

    Das einmal für den ersten und für den zweiten Testenuser durchführen. Stehen dort die gleichen Zahlen?

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

    Dann könntest du etwas SPENDEN. :)


    HERTHA BSC heißt unser Verein
    HERTHA BSC wird es immer sein!

  • Hab den echo-Befehl so eingefügt:

    und ich erhalt für meine zwei Tipper, wo mir die Zugangsdaten bekannt sind, folgendes Ergebnis:


    string(2) "11" und string(3) "114"


    es wird die User-ID ausgelesen.


    Das scheint ja soweit zu funktionieren, die verschiedenen User-ID werden korrekt ausgelesen, also kein Sessionproblem.

  • Hab mir jetzt noch einmal die Original index.php (also ohne meine eigenen Anpassungen) in den root geladen, und es ist das selbe Phänomen. Die abgegebenen Bonustipps werden nicht nach der user-ID unterschieden, sondern zählen fortlaufend mit der Abgabe. Tippen drei Tipper den Dt. Meister 19/20 verschwindet die Toastmessage-Meldung (links oben).


  • Teststellung: Ein x User hatte bereits einen von drei möglichen Bonustipps abgegeben, jetzt geht TestUser01 online und sieht, dass er nur noch zwei von drei Bonustipps abgeben kann, obwohl er noch keinen Tipp abgegeben hatte?

  • Hab jetzt den Fehler gefunden.

    Wir müssen die Abfrage in der include/functions.inc.php und der Funktion getMissingBonustipps() anpassen.


    Die zweite SQL-Abfrage muss nun so aussehen:

    Code
    1. // Anzahl fehlende oder unvollständige Antworten auslesen
    2. $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"
    3. ." LEFT JOIN ". $tbl['bonus_punkte'] ." AS bp ON bp.bid = bf.id"
    4. ." LEFT JOIN ". $tbl['bonus_tipps'] ." AS bt ON (bt.bid = bf.id AND bt.subbid = bf.subid AND bt.usr = ". $user_id .")"
    5. ." WHERE bf.liga = '". $saison['liga'] ."'"
    6. ." AND bf.saison = ". $saison['jahr2']
    7. ." AND (bf.type != bt.type OR bt.type IS NULL)"
    8. . ($complete_tipps != "" ? " AND ". $complete_tipps : "")
    9. ." GROUP BY bf.id, bf.subid"
    10. ." HAVING bp.date > ". time();

    Im zweiten LEFT JOIN habe ich noch eine dritte Bedinung mit der UserID-Abfrage hinzugefügt, so dass auch die richtigen Tipps abgerufen werden und nicht irgendwelche.

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

    Dann könntest du etwas SPENDEN. :)


    HERTHA BSC heißt unser Verein
    HERTHA BSC wird es immer sein!

  • FiedlWdd, was soll ich sagen, Du bist perfekt, einfach eine top Arbeit. Du hattest schon den Verdacht mit der function.inc.php gehabt! Ich habe eher da an ein Ansichts- bzw. Ausleseproblem aus der DB in Verdacht gehabt und so in der index.php bzw. der bonustipps.php gesucht.


    Müssten nicht andere User das gleiche Problem wie ich haben, oder benützen diese nicht die Anzeige-Funktion der Toastmessages?

  • Ich hatte letzte Saison erst nach der Abgabe aller Bonustipps der User mitten in der laufenden Spielzeit umstellen müssen, weil mein Provider php 5 eingestellt hatte, man hab ich geschwitzt. Ging aber alles gut. Denke aber auch, dies wird doch dann sicher ein Problem aller sein. Bin gerade dabei auf 19/20 umzustellen und werde deine Anpassungen gleich mit einarbeiten.

    Danke dafür FiedlWdd

  • Müssten nicht andere User das gleiche Problem wie ich haben, oder benützen diese nicht die Anzeige-Funktion der Toastmessages?

    Das ist richtig, jeder User sollte das Problem haben, egal ob PHP5 oder PHP7-Version.

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

    Dann könntest du etwas SPENDEN. :)


    HERTHA BSC heißt unser Verein
    HERTHA BSC wird es immer sein!

  • Hab jetzt den Fehler gefunden.

    Wir müssen die Abfrage in der include/functions.inc.php und der Funktion getMissingBonustipps() anpassen.


    Die zweite SQL-Abfrage muss nun so aussehen:

    Code
    1. // Anzahl fehlende oder unvollständige Antworten auslesen
    2. $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"
    3. ." LEFT JOIN ". $tbl['bonus_punkte'] ." AS bp ON bp.bid = bf.id"
    4. ." LEFT JOIN ". $tbl['bonus_tipps'] ." AS bt ON (bt.bid = bf.id AND bt.subbid = bf.subid AND bt.usr = ". $user_id .")"
    5. ." WHERE bf.liga = '". $saison['liga'] ."'"
    6. ." AND bf.saison = ". $saison['jahr2']
    7. ." AND (bf.type != bt.type OR bt.type IS NULL)"
    8. . ($complete_tipps != "" ? " AND ". $complete_tipps : "")
    9. ." GROUP BY bf.id, bf.subid"
    10. ." HAVING bp.date > ". time();

    Im zweiten LEFT JOIN habe ich noch eine dritte Bedinung mit der UserID-Abfrage hinzugefügt, so dass auch die richtigen Tipps abgerufen werden und nicht irgendwelche.

    In meiner, PHP 5, function finde ich weder eine Funktion die so heißt noch einen teil des codes oder z.b. das Wort fehlende...


    =O


    P.S.: Muss aber sagen dass ich auch keine Fehler fest stellen kann

    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 ***

  • Das ist richtig, jeder User sollte das Problem haben, egal ob PHP5 oder PHP7-Version.

    Ich dachte auch eher es ist ein php7 Problem, weil ich die Jahre vorher eigentlich keine Probleme hatte. Bin gerade noch bei der Umstellung, darum kann ich nicht sagen ob ich derzeit Kaikiste's Problem habe.

  • Nein, mit der php5-Version hatte ich zuletzt auch keine Probleme. Mit php5 bin ich noch in die Saison 2018/19 gestartet. Ich hatte aber im April 2019 während der Länderspielpause / Osterferien auf die php7-Verison, im laufenden Betrieb, umgestellt, da mein Provider mir die php5 abgekündigt hatte. Zu diesem Zeitpunkt waren meine Bonustipps mit der letztmöglichen Abgabe bereits durch. Deshalb ist mir der Fehler jetzt in der Vorbereitung auf die Saison 19/20 erst aufgefallen. In der 3.Liga habe ich keine Bonustipps aktiviert.