Contao Fehler bei Zeiteingabe

  • Hallo,


    zufällig Contao Spezialisten im Forum? Ziehe gerade mit Contao nach NetCup und bekomme beim Testen folgende Fehlermeldung...



    Fehler.PNG


    Der Fehler tritt auf, wenn ich in Contao die Zeitzone von "GMT" auf "Europa/Berlin" ändere und dann versuche im Kalender eine Zeit unter 01:00 abzuspeichern.


    Jemand eine Idee?


    Gruß Bernd

  • Da ich nicht weiß wie technisch bewandert du bist:

    Die Fehlermeldung kommt von der Datenbank und sagt aus, dass der Wert -1800 nicht gespeichert werden kann, weil er außerhalb der zugelassenen Werte liegt.

    Wenn du weißt wie du einen SQL-Query auf deine Datenbank feuerst, zeig uns mal bitte den Output von DESCRIBE tl_calendar_events;

    Wahrscheinlich ist das Feld unsigned.


    Was aber viel wahrscheinlicher die Ursache ist, ist dass hier programmatisch gepfuscht wurde. 1800 sind nämlich zufällig 30 Minuten in Sekunden. Vermutlich errechnet die Software welche Uhrzeit in UTC die Uhrzeit 00:30 Uhr von Berlin (derzeit UTC+1) ist. Das ist nämlich 23:30 Uhr vom Vortag und zufälligerweise sind das genau -1800 Sekunden Differenz bis 0 Uhr des ausgewählten Tages.

    Damit kann die Software wohl nicht umgehen. Sie müsste jetzt ja nicht -1800 speichern, sondern den vorherigen Tag auswählen und dort (86400-1800=84600) eintragen (das wäre 23:30 Uhr). Dein Termin findet in UTC nämlich um 23:30 Uhr am Vortag statt.


    Ich weiß das hilft dir nur bedingt weiter... Aber mit der Fehleranalyse kannst du das Problem entweder selber im Quellcode fixen oder musst dich an den Hersteller der Software wenden.

  • Hallo,


    keine Migration. Ist eine komplette Neuinstallation. Ich habe jetzt zwei gleiche Contao 4.4.9 Neu-Installationen bei 1&1und NetCup getestet. 1&1 keine Probleme, NetCup = Fehler.

    Der Fehler tritt nicht auf, wenn ich bei GMT in Contao bleibe. Sobald ich die Zeitzone in Contao ändere kann ich keine Termine < 01:00 Uhr eingeben.

    Ich habe dann den Timestamp für 00:30 (UTC+1) direkt in die Datenbank eingegeben. Und siehe da, da wird sie auch richtig in Backend wie Frontend als 00:30 angezeigt. Wenn ich dann versuche den Termin auf 00:01 - 00:59 zu ändern gleiche Fehlermeldung:(.


    Nun kommen zwar bei uns keine Termine zur Geisterstunde vor, ist also nicht kritisch aber ein ungutes Gefühl bleibt.

  • Ich habe dann den Timestamp für 00:30 (UTC+1) direkt in die Datenbank eingegeben.

    Werden Termine, die du über Contao einstellst (z.B: um 03:00 Uhr GMT+1) nach dem Speichern in Contao für die richtige Zeit angezeigt (Datum + Uhrzeit) und was steht bei startTime für den neuen Termin dann in der Datenbank? Ein UNIX-Timestamp für den Tag 02 Uhr (GMT)?

  • ...

    Wenn du weißt wie du einen SQL-Query auf deine Datenbank feuerst, zeig uns mal bitte den Output von DESCRIBE tl_calendar_events;

    Wahrscheinlich ist das Feld unsigned.

    ...

    Hallo Hecke29,


    das hört sich gefährlich an. Kann du das auch in Altdeutsch übersetzten, ich gehöre zur Generation von Konrad Zuse. ;) Ist wie gesagt alles Standard Contao 4.4.

  • Hallo Hecke29,


    das hört sich gefährlich an. Kann du das auch in Altdeutsch übersetzten, ich gehöre zur Generation von Konrad Zuse. ;) Ist wie gesagt alles Standard Contao 4.4.

    Moin,


    das ist eine nur lesende Aktion, die anzeigt wie die Tabelle definiert ist. Ich wollte herausfinden von welchem Datentyp die Spalte startTime ist. Scheint aber ein unsigned int zu sein.

  • Werden Termine, die du über Contao einstellst (z.B: um 03:00 Uhr GMT+1) nach dem Speichern in Contao für die richtige Zeit angezeigt (Datum + Uhrzeit) und was steht bei startTime für den neuen Termin dann in der Datenbank? Ein UNIX-Timestamp für den Tag 02 Uhr (GMT)?

    Oha, soll schnell kann ich gar nicht schreiben. Alle Timestamps sind je nach Einstellung der Zeitzonen in der Datenbank passend.

  • Ist wie gesagt alles Standard Contao 4.4.

    Ich vermute ein Fehler in der Installation, deswegen Frage ich wie du es Installiert hattest


    über den

    Contao-Manager

    SSH-Console

    FTP


    Dann noch die Datenbank, wurde die auch neu erstellt?!

    Was sag das Installationstool? Das Prüft die Datenbank eigentlich


    Irgendwelche Plugins hast du auch nicht dabei?




    Installiere mir mal gerade auch contao neu auf dem Webhosting Vertrag

  • Moin,


    das ist eine nur lesende Aktion, die anzeigt wie die Tabelle definiert ist. Ich wollte herausfinden von welchem Datentyp die Spalte startTime ist. Scheint aber ein unsigned int zu sein.

    Unsigniert... was immer das heißt.


    'startTime' => array

    (

    'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['startTime'],

    'default' => time(),

    'exclude' => true,

    'filter' => true,

    'sorting' => true,

    'flag' => 8,

    'inputType' => 'text',

    'eval' => array('rgxp'=>'time', 'mandatory'=>true, 'doNotCopy'=>true, 'tl_class'=>'w50'),

    'load_callback' => array

    (

    array('tl_calendar_events', 'loadTime')

    ),

    'sql' => "int(10) unsigned NULL"

  • Fehler bei der Installation kann man ausschließen. Sind jetzt insgesamt drei Installationen über den Manager, keine Plugins keine Erweiterungen und alles neue Datenbanken.

  • Fehler bei der Installation kann man ausschließen. Sind jetzt insgesamt drei Installationen über den Manager, keine Plugins keine Erweiterungen und alles neue Datenbanken.

    ok das hört sich gut an! Dann sieht es echt nach einen Fehler aus!


    bin noch dabei es auf meinen webhosting-server zuinstallieren

  • Das Fehlerbild ist seltsam...


    Also. Was ja von der Anwendung richtig wäre, wäre zum UTC-Timestamp des Termins (Datum um 0 Uhr GMT) -1800 Sekunden zu addieren (negative Zahl dazu addieren = Subtraktion). Dann hat man 23:30 GMT und 00:30 GMT+1.

    Aber scheinbar schlägt das (auf dem netcup-Hosting) fehl, wenn die zu addierende Zahl negativ ist.


    Welche PHP-Version nutzt du?

    Probiert ihr hier mal weiter rum, ich durchsuche mal den Quellcode :D

  • Ich denke hier liegt der "Fehler", im GitHub sieht die tl_calendar_event so aus https://github.com/contao/co...



    bei mir ist, wieso auch immer, ist noch ein Callback mit drin...


    und der liefert die (-1800). Wozu auch immer das ist.