Ankündigung

Einklappen
Keine Ankündigung bisher.

deutsches Datumsformat in SQL übergeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • deutsches Datumsformat in SQL übergeben

    Hallo Freunde,

    bin der Marcus und ganz neu bei euch

    ...und schon komme ich mit einem wohl schon oft durchgekauten Thema :-/
    Habe auch shon diverse Themen hier durchgesehen aber noch nichts passendes gefunden...

    Ich habe folgende Konstellation:

    Auf einer Seite habe ich mehrere Felder in denen man das Datum im deutschen Format, also TT.MM.JJJJ eingeben kann und mit klick auf "abschicken" wird dies in eine Datenbanktabelle abgespeichert.

    Mein Problem ist derzeit, dass es zwar geht aber nur wenn ich es im amerikanischen Stil schreibe: JJJJ.MM.TT

    Widerum die Darstellung klappt wunderbar - über "date_format(feld, '%d.%m.%Y') AS feld" ...

    Ich habe mal ein paar Code-Schnipsel angehängt um zu verdeutlichen, wie es derzeit bei mir aussieht... (bin dazu "verdonnert" worden, ein teilfertiges Projekt weiter zu führen )

    Eingabemaske.PHP:

    Code:
    <?php
    session_start();
    
    $hostname = $_SERVER['HTTP_HOST'];
    $path = dirname($_SERVER['PHP_SELF']);
    $_username=$_SESSION['username'];
    $_SESSION['kunde']['gruppe'];
    
    if (!isset($_SESSION['login']) || !$_SESSION['login']) {
        header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
        exit;
    }
    ?>
    <html>
    <head>
        <title>Eingabemaske</title>
    </head>
    
    <body>
    <?php
    // Verbindung zur Datenbank herstellen
    require_once "ini.db.php";
    
    // SQL-Anfrage: Zeile mit der übergebenen Matrikelnummer  wählen
    $sql="SELECT
                    f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,
    		date_format(f13, '%d.%m.%Y') as 	f13, 
    		date_format(f14, '%d.%m.%Y') as f14,
     		f15,
     		date_format(f16, '%d.%m.%Y') as	 f16	
     	FROM auftrag WHERE f1=$_GET[id]";
    
    // Anfrage ausführen
    $result=mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");
    
    // Formular darstellen
    if ($row=mysql_fetch_row($result))
    {
        echo "<form method=\"post\" action=\"tabelle-bearbeiten.php\">\n";
           echo "<br>Datum1: <input type=\"text\" name=\"f13\" value=\"$row[12]\">\n";
        echo "<br>Datum2: <input type=\"text\" name=\"f14\" value=\"$row[13]\">\n";
        echo "<br>Datum3: <input type=\"text\" name=\"f15\" value=\"$row[14]\">\n";
        echo "<br>Datum4: <input type=\"text\" name=\"f16\" value=\"$row[15]\">\n";
        echo "<br><br><input type=\"submit\" name=\"submit_eingabemaske\" value=\"Abschicken\">\n";
        echo "</form>\n";
    }
    ?>
    </body>
    </html>
    In der SQL-Datenbank habe ich die entsprechenden Felder als "date" deklariert ohne vordefinierten Inhalt.

    Bei jedem Laden einer neuen Seite, Login usw., z.B. auch bei der Abfrage nach Tabellen/Datenbankinhalt wird wie oben im Code zu sehen auch eine "ini.db.php" geladen mit folgendem Inhalt:

    ini.db.PHP:
    Code:
    <?php
        $serv="localhost";
        $user="Musteruser";
        $pass="123456";
        $base="testdb";
        @mysql_connect($serv, $user, $pass) or exit("Fehler bei Verbindung zur Datenbank: $serv $user<br/>");
        @mysql_select_db($base) or exit("Datenbank $base nicht vorhanden<br/>");
    
    
        // Einstellung: SQL-Fehlermeldungen anzeigen
        $showsqlerrors=true;
    
        // Ausgabe einer Fehlermeldung und Abbruch
        function sqlExit($sql)
        {
            global $showsqlerrors;
            if ($showsqlerrors)
                echo "Fehler in SQL-Kommando: $sql<br/>".mysql_error()."<br/>\n";
            exit();
        }
    
        // Ausführung des SQL-Kommandos $sql
        // Abbruch, falls SQL-Kommando fehlerhaft
        function sqlQuery($sql)
        {
            $result=mysql_query($sql) or sqlExit($sql);
            return $result;
        }
    ?>
    Gehe ich recht in der Annahme das schon in dieser Datei eine entsprechende Funktion eingebaut werden muss bzw. sollte?

    Entschuldigt bitte die Fragestellungen - aber ich bin noch recht frisch auf diesem Gebiet also bitte nicht mit ganz so großen Steinen nach mir werfen

    Lange Rede, kurzer Sinn:
    Wie bekomme ich es hin, dass man einfach das Datum in deutscher Schreibweise einträgt und dieses dann widerum sauber in der Tabelle abgespeichert wird in der Datenbank?

    Danke euch schonmal!

    Grüße,
    Marcus

  • #2
    deutsches Datumsformat in SQL übergeben

    Hallo!
    Zitat von MarNo84
    Wie bekomme ich es hin, dass man einfach das Datum in deutscher Schreibweise einträgt und dieses dann widerum sauber in der Tabelle abgespeichert wird in der Datenbank?
    Aktuelle Browser wie Chrome und Opera helfen hier ganz gut, indem das Eingabefeld dem Typ Date zugewiesen wird.
    PHP-Code:
    <form method="post" action="">
        <
    input type="date" name="datum" />
        <
    input type="submit" value="Senden" />
    </
    form
    Das ist schon eine Schöne Sache, insbesondere da das Datum dann entsprechend umgewandelt wird. Geht aber wie gesagt nicht in allen Browsern.

    Wenn du dich auf die Eingaben deiner User verlassen willst ( solltest du aber nicht ) könntest du per Explode das Format umwandeln.
    PHP-Code:
    $deutsch "17.06.2014";
    $d explode".",$deutsch );
    $datum $d[2] . "-" $d[1] . "-" $d[0];
    echo 
    $datum// 2014-06-17 
    Daher wäre jQuery Datepicker zu empfehlen. Neben der gewünschten Funktion sieht´s auch noch schick aus.
    Delirius

    PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

    Kommentar


    • #3
      Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
      Choosing an API
      Warum man mysql* generell nicht (mehr) nutzen sollte.
      Wie man von mysql* auf PDO umsteigt
      Wissenswertes zum Thema SQL-Injection

      Kommentar

      Lädt...
      X