Deutsches Datumsformat per Input-Form nach MySQL im SQL-Format

Sun Rider

Mitglied
Hallo Gemeinde,

ich hätte da mal ein kleines (oder großes ?) Problem:

Ich habe einen MySQL-gestützten Terminkalender. Für die Ausgabe der Termine wandele ich das SQL-Datumsformat per "strtotime" in das deutsche Format um. So weit OK, das klappt.

Jetzt hab ich allerdings das Problem, das im Admin-Bereich bei der Eingabe von Terminen in ein Formular immer das falsche Format an die Datenbank übergeben wird.
Dachte, ich krieg es mit strtotime und der entsprechenden Formatangabe wieder umgekehrt. Anscheinend baue ich diese Zeile aber ständig an der falschen Stelle in den Code, da sie offenbar nicht berücksichtigt wird.

Kann mir da jemand auf die Sprünge helfen ?
Mit der Suche hab ich zwar viele Beiträge zur Datumsumwandlung gefunden, aber irgendwie hat nix für mich gepasst oder ich habs (sorry) übersehen.

Hier mal der Codeschnipsel, vorab schon mal Danke für die Mühe !!

PHP:
case "new":
        if (isset($_POST['sent']) && $_POST['sent']=='1') {
             if(!$_POST['datum'] OR !$_POST['inhalt']) {
               print "Bitte Prüfen Sie, ob die Felder Datum und Inhalt ausgefüllt wurden.";
               } else {

               $sql = "INSERT INTO
                                `termine` ( datum,
                                                   beschreibung,
                                                    inhalt
                                                   )
                                                   VALUES
                                                               ('". $_POST['datum'] ."',
                                                                '". $_POST['beschreibung'] ."',
                                                                '". $_POST['inhalt'] ."')";

                mysql_query($sql)
               or die("<b>Error:</b> ". mysql_error());
                print "<meta http-equiv=\"refresh\" content=\"0; URL=termine_admin.php\">\n";
                 }
                 }
                 print "<form action=\"termine_admin.php?action=new\" method=\"post\">\n";
                                            print "Datum: <input name=\"datum\" type=\"input\"";
                                                  
 // --------------------  Dies ist die betreffende Zeile zur Umwandlung----------------------------------

                                            $datum = date('Y-m-d', strtotime($datum)); 

//-----------------------------------------------------------------------------------------------

            if (isset($_POST['datum'])) {

                    print " value=\"". $_POST['datum'] ."\" ";
                    }
                     print ">&nbsp;&nbsp;&nbsp;&nbsp;\n";
                     print "Beschreibung: <input name=\"beschreibung\" type=\"input\"";

                     if (isset($_POST['beschreibung'])) {
                               print " value=\"". $_POST['beschreibung'] ."\" ";
                               }
                               print "<br /><br />\n";
                               print "Text:<br>\n";
                               print "<textarea cols=\"80\" name=\"inhalt\" rows=\"5\">";

                     if (isset($_POST['inhalt'])) {
                               print $_POST['inhalt'];
                               }
                               print "</textarea><br>\n";
                               print "<input name=\"sent\" type=\"hidden\" value=\"1\">\n";
                               print "<input name=\"send\" type=\"submit\" value=\"Senden\">\n";
                               print "<input name=\"reset\" type=\"reset\" value=\"Zurücksetzen\">\n";
                               print "</form>\n";
                               break;
 
Zuletzt bearbeitet:
PHP:
VALUES
                                                               ('". $_POST['datum'] ."',
                                                                '". $_POST['beschreibung'] ."',
                                                                '". $_POST['inhalt'] ."')";

Das sieht so aus, als würdest du POST[datum] unverändert in die datenbank schreiben.... Das musst du anpassen.
 
Hallo alxy,

das hab ich mir auch schon gedacht, komme damit aber nicht weiter. $_post[datum] kann ich nicht ändern, weil von der Ausgabeseite auch verwendet. Ändere ich den Namen im Input, will er das nicht annehmen und verhält sich, als wäre ein Feld nicht ausgefüllt...
 
PHP:
<?php

$sql = "INSERT
		 INTO `termine` (datum, beschreibung, inhalt)
		 VALUES('". DateTime::createFromFormat('d.m.Y', $_POST['datum'])->format('Y-m-d') ."','". $_POST['beschreibung'] ."','". $_POST['inhalt'] ."')";
 
Hey alxy,

besten Dank. Darauf wär ich nie gekommen. Das klappt einwandfrei, SUPER.

By the Way: In der 4. Zeile meines Schipsels wird eine Meldung ausgegeben, wenn nicht alle Felder ausgefüllt sind.
In der Zeile darüber wird darauf geprüft. Eigentlich sind es ja 3 Felder, in der Prüfung kann ich aber nur 2 angeben. Sobald ich das 3. mit in die Prüfzeile packe, kriege ich immer die Meldung, es wäre nicht alles ausgefüllt, obwohl alle Felder voll sind. Können hier nur 2 Sachen geprüft werden, oder hab ich irgendwo 'nen Bock drin ?
 
Zuletzt bearbeitet:
Hallo alxy,

Danke, war die richtige Idee, allerdings müssen die ! vor dem empty weg, sonst will er ja leere Felder haben :-)

Geht dann aber super. Vielen Dank für deine Hilfe !
Viele Grüße
Sun Rider

Hallo alxy,

hat alles so toll geklappt gestern. Heute nu schieb ich die Dateien auf den Websvr und was ist ?
Nix ist. Auf der Mühle läuft nur PHP 4.3 ****** Könnt den Betreiber.... naja, lassen wir das.

Ist "strtotime" und "DateTime::createFromFormat" nur ab PHP 5.xx lauffähig, falls ja, gibt's dazu eine 4er Alternative ?

Gruß
Sun Rider

edit: hab grade festgestellt, das strtotime funktioniert, nur DateTime wohl nicht...
 
DateTime;;createFromFormat ist das objektorientierte pendant zu strtotime()... viele dieser Dinge wurden erst mit PHP5 eingeführt.

Tipp: wechsle den hoster. PHP4 wird meines Wissens nach nichtmehr weiterentwickelt und Bugs werden teilweise nichtmehr gefixt...
 
Hallo alxy,

OK, Danke. Muss ich den Hoster wohl noch mal anschieben. Hatte ich vor längerem schon mal gemacht. Leider bis dato nix...

Andere Möglichkeit, das in php4 zu lösen gibt's demnach wohl keine.

Edit: Hab's jetzt mit strtotime doch noch hinbekommen. Geht erst mal. Hoffe der Hoster stellt bald auf PHP 5 um.

Trotzdem Danke für die Denkanstöße !!
 
Zuletzt bearbeitet:
Zurück