Contao-Camp 2024
Ergebnis 1 bis 27 von 27

Thema: Speicherung des Datums im deutschen Format

  1. #1
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard Speicherung des Datums im deutschen Format

    Guten Morgen,

    ich habe mir ein Modul programmiert. Die benötigten Daten dazu werden per Formular aus dem Frontend in die Datenbank gespeichert. Dazu habe ich im Datenbankfeld "date" den Typ "timestamp" & Standart "Current_timestamp" eingestellt. Wenn ich dieses Datum nun in meinem Backendmodul ausgebe, ist dies im Englischen Format "Y-m-d H:...." Leider benötige ich dort jedoch folgendes Format: "d-m-Y".

    Wie kann ich also automatisch beim Absenden des Formulars das deutsche Datum in der Datenbank speichern und welchen Typ muss das Datenbankfeld haben?

    Gruß Chris

  2. #2
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    793
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Datum und Zeitangaben sollten nach Möglichkeit als timestamp gespeichert werden, daraus lassen sich dann alle Formate ableiten.

    Ggf. kannst du auch gleich auf den tstamp zurückgreifen wenn du nur den Zeitpunkt des Anlegens brauchst.

  3. #3
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard

    Zitat Zitat von Ainschy Beitrag anzeigen
    Datum und Zeitangaben sollten nach Möglichkeit als timestamp gespeichert werden, daraus lassen sich dann alle Formate ableiten.

    Ggf. kannst du auch gleich auf den tstamp zurückgreifen wenn du nur den Zeitpunkt des Anlegens brauchst.

    Danke für die schnelle Antwort. Aber wie kann ich das in der Datenbank beim Absenden des Formulars speichern? Danke!

  4. #4
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    PHP-Code:
    'sql' => "varchar(10) NOT NULL default ''" 
    oder besser
    PHP-Code:
    'sql' => "int(10) unsigned NOT NULL default '0'" 
    sollte Deine Zeile im DCA lauten.

    EDIT: Achso, im Frontend ... Aber generell würde ich mein Feld als Timestamp machen, also als Zahl mit 10 Stellen. Liegt das Datum aber weit in der Vergangenheit oder Zukunft speichere ich das Datum immer als Zahl im Format JJJJMMTT. Das wäre dann int(8).
    Geändert von Samson1964 (05.12.2018 um 14:15 Uhr)
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  5. #5
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    793
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wenn du nur das deutsche Datum in deiner Datentabelle brauchst, dann lege ein verstecktes Feld im Formular an und setzt den Wert mittels {{date}}.

    Der Spaltentyp wäre dann varchar(10)

    Soll es ein tstamp sein, so wie Samson geschrieben die Spalte ändern.
    Geändert von Ainschy (05.12.2018 um 14:15 Uhr)

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    Du möchtest doch einfach nur die Ausgabe des Datums im Backend ändern, oder?

  7. #7
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Das ist jetzt nur so ne vorsichtige Frage, aber Du validierst Die im Frontend eingegebenen Daten hoffentlich, bevor Du sie in die DB schreibst... Oder?

  8. #8
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard Speicherung des Moduls

    Hallo,
    ich habe nun das Datum im "deutschen" Format in die Datenbank gespeichert. Vielen Dank dafür.
    Nun habe ich folgendes Problem mit meinem Modul:

    • Wenn ich einen Datensatz im Backend von Contao bearbeiten und speichern möchte kommt folgende Fehlermeldung: Unknown column 'tstamp' in 'field list' (UPDATE meineTabelle SET tstamp=irgendwas WHERE id='21')

    Warum möchte das Modul, nach dem Bearbeiten, einen tstamp speichern?

    MfG

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    Zitat Zitat von c.stege Beitrag anzeigen
    Hallo,
    ich habe nun das Datum im "deutschen" Format in die Datenbank gespeichert.
    Das ist generell eine schlechte Idee . Warum willst du das so machen?


    Zitat Zitat von c.stege Beitrag anzeigen
    • Wenn ich einen Datensatz im Backend von Contao bearbeiten und speichern möchte kommt folgende Fehlermeldung: Unknown column 'tstamp' in 'field list' (UPDATE meineTabelle SET tstamp=irgendwas WHERE id='21')

    Warum möchte das Modul, nach dem Bearbeiten, einen tstamp speichern?

    MfG
    Jede Tabelle, die von Contao verwaltet wird, braucht eine tstamp Feld. Das hast du wohl entfernt.

  10. #10
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das ist generell eine schlechte Idee . Warum willst du das so machen?
    Ich möchte einfach das aktuelle Datum von der Erstellung des Eintrages in der Datenbank haben...
    Verbesserungsvorschläge sind gewünscht.

    Zitat Zitat von Spooky Beitrag anzeigen
    Jede Tabelle, die von Contao verwaltet wird, braucht eine tstamp Feld. Das hast du wohl entfernt.
    Ich habe ein eigenes Modul mit einer eigenen Tabelle. Verlangt Contao also grundsätzlich ein tstamp Feld?

    Wenn ja, wie kann ich das Datum im Backendmodul als DD.MM.YYYY ausgeben???

    MfG
    Geändert von c.stege (07.12.2018 um 11:01 Uhr) Grund: Verbesserung

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    Zitat Zitat von c.stege Beitrag anzeigen
    Ich möchte einfach das aktuelle Datum von der Erstellung des Eintrages in der Datenbank haben...
    Verbesserungsvorschläge sind gewünscht.
    Einfach als UNIX_TIMESTAMP oder als MySQL DATETIME speichern.



    Zitat Zitat von c.stege Beitrag anzeigen
    Ich habe ein eigenes Modul mit einer eigenen Tabelle. Verlangt Contao also grundsätzlich ein tstamp Feld?
    Wenn du für diese Tabelle Einträge im Contao Backend erstellst oder editierst, dann ja.



    Zitat Zitat von c.stege Beitrag anzeigen
    Wenn ja, wie kann ich das Datum im Backendmodul als DD.MM.YYYY ausgeben???
    Ich verstehe dein Modul noch nicht ganz. Poste mal das DCA bspw.

  12. #12
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Einfach als UNIX_TIMESTAMP oder als MySQL DATETIME speichern.
    Die MySQL DATETIME speichert YYYY-MM-DD.
    Ich möchte aber das Format in der Datenbank: DD.MM.YYYY

    Zitat Zitat von Spooky Beitrag anzeigen
    Wenn du für diese Tabelle Einträge im Contao Backend erstellst oder editierst, dann ja.
    Ich habe eine Auflistung im Backend und ich möchte dort nur eine Checkbox verändern. Der tstamp wird trotzdem gespeichert, obwohl ich nur die Checkbox verändere.

    Zitat Zitat von Spooky Beitrag anzeigen
    Ich verstehe dein Modul noch nicht ganz. Poste mal das DCA bspw.
    HTML-Code:
    'date'     => array
    		(
    			'label'     => &$GLOBALS['TL_LANG']['tl_testtable']['date'],
    			'inputType' => 'text',
    			'exclude'   => true,
    			'eval'      => array(
    				'disabled' => true
    		),
    			'sql' => "varchar(10) NOT NULL default ''"
    		),
    Beispiel vom Date, welches ich nur angezeigt haben möchte. Das soll standardmäßig ja nicht verändert werden...

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    Zitat Zitat von c.stege Beitrag anzeigen
    Die MySQL DATETIME speichert YYYY-MM-DD.
    Ich möchte aber das Format in der Datenbank: DD.MM.YYYY
    Nein, möchtest du nicht . In der Datenbank solltest du ein uniformes Format verwenden.



    Zitat Zitat von c.stege Beitrag anzeigen
    Ich habe eine Auflistung im Backend und ich möchte dort nur eine Checkbox verändern. Der tstamp wird trotzdem gespeichert, obwohl ich nur die Checkbox verändere.
    Ja, so ist das auch gedacht.



    Zitat Zitat von c.stege Beitrag anzeigen
    HTML-Code:
    'date'     => array
    		(
    			'label'     => &$GLOBALS['TL_LANG']['tl_testtable']['date'],
    			'inputType' => 'text',
    			'exclude'   => true,
    			'eval'      => array(
    				'disabled' => true
    		),
    			'sql' => "varchar(10) NOT NULL default ''"
    		),
    Beispiel vom Date, welches ich nur angezeigt haben möchte. Das soll standardmäßig ja nicht verändert werden...
    Post bitte dein gesamtes DCA.

  14. #14
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard Update

    Hallo,
    ich habe das ganze nun als timestamp gespeichert und es funktioniert, wie ich es haben möchte.

    Eine Sache gibt es noch...:

    • Ist es möglich, das Updaten des Timestamps, beim Speichern eines Eintrages, zu verhindern? Das Datum soll im Backend nämlich immer gleich bleiben.


    MfG

  15. #15
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    Warum wird das Feld automatisch aktualisiert?

  16. #16
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    Zitat Zitat von c.stege Beitrag anzeigen
    Ist es möglich, das Updaten des Timestamps, beim Speichern eines Eintrages, zu verhindern? Das Datum soll im Backend nämlich immer gleich bleiben.
    Passiert eigentlich nur wenn das Feld den Namen tstamp hat. Bei allen anderen Feldern mußt Du selbst tätig werden.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  17. #17
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard

    Hallo,
    ich weiß nicht, warum das automatisch geupdated wird.

    Wenn ich in meinem Modul einen Beitrag bearbeite, gibt es kein Feld mit tstamp.
    Egal was ich dort speicher es wird immer der tstamp mit geupdated...

    MfG

  18. #18
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    Ja, das ist normal. Contao aktualisiert automatisch tstamp, wenn du einen Eintrag bearbeitest oder erstellst. Dafür ist dieses Feld da.

  19. #19
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ja, das ist normal. Contao aktualisiert automatisch tstamp, wenn du einen Eintrag bearbeitest oder erstellst. Dafür ist dieses Feld da.
    Das mag ja sein, das Datum soll nach dem Bearbeiten gleich bleiben. Kann man das nicht umgehen?

  20. #20
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    tstamp ist ein System Feld, auf das du keinerlei Einfluss hast. Da wird einfach gespeichert, wann ein Eintrag zum letzten mal bearbeitet wurde.

    Warum ist das für dich relevant? Benutzt du nun das tstamp Feld für deine Zwecke? Das solltest du natürlich nicht machen.

  21. #21
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard

    Hallo,

    es geht darum, ein Beitrag wird veröffentlicht und im Backend kann eingestellt werden ob dieser Veröffentlicht werden soll oder nicht.
    Wenn ich einen haken in die Checkbox setze, wird das Datum automatisch aktualisiert.
    Das Datum ist eigentlich dafür da wann dieser Beitrag erstellt wurde und das Datum sollte, wenn dieser im Backend auf Öffentlich gesetzt wird, nicht updaten.

    Kann man das also nicht realisieren??

    MfG

  22. #22
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    Doch natürlich, du musst das einfach nur in einem eigenen Feld speichern - und nicht das tstamp Feld dafür benutzen.

  23. #23
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    Zitat Zitat von c.stege Beitrag anzeigen
    Hallo,

    es geht darum, ein Beitrag wird veröffentlicht und im Backend kann eingestellt werden ob dieser Veröffentlicht werden soll oder nicht.
    Wenn ich einen haken in die Checkbox setze, wird das Datum automatisch aktualisiert.
    Das Datum ist eigentlich dafür da wann dieser Beitrag erstellt wurde und das Datum sollte, wenn dieser im Backend auf Öffentlich gesetzt wird, nicht updaten.

    Kann man das also nicht realisieren??

    MfG
    Ich realisiere das selbst in eigenen Erweiterungen. Aber natürlich nicht mit dem Feld tstamp. Siehe https://github.com/Samson1964/contao....php#L159-L168
    Geändert wird das Feld nur über den Callback. Ansonsten ändert sich nichts an dem Feld.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  24. #24
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard

    Hallo,

    das ist ja das Problem. Ich habe kein tstamp Feld. Dennoch versucht er dieses zu updaten.

    Habe ja ein eigenes Feld namens "datums"...

  25. #25
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.882
    Partner-ID
    10107

    Standard

    Zitat Zitat von c.stege Beitrag anzeigen
    das ist ja das Problem. Ich habe kein tstamp Feld. Dennoch versucht er dieses zu updaten.
    Du brauchst ein tstamp Feld, weil Contao das so verlangt.


    Zitat Zitat von c.stege Beitrag anzeigen
    Habe ja ein eigenes Feld namens "datums"...
    Dann passt es ja. Dieses Feld sollte nicht automatisch aktualisiert werden.

  26. #26
    Contao-Nutzer
    Registriert seit
    01.12.2016.
    Beiträge
    181

    Standard

    Perfekt. Vielen Dank Spooky. Es hat funktioniert

  27. #27
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Im core wird das sehr ähnlich der Variante von @Samson1964 gemacht, hier z.B.:

    https://github.com/contao/core-bundl...ember.php#L566

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •