Sebastian: Daten ausgeben

Hallo,

habe ein kleines Problem in PHP:

in meiner SQL-DB sind 2 Spalten als "DATE" festgelegt. Wenn ich nun diese Spalten als Text auf der PHP ausgeben möchte, so wird mir dieser im Format yyyy-mm-dd ausgegeben. Gibt es eine Möglichkeit diesen auch im Deutschen Format tt.mm.yyyy auszugeben ?

Wenn ja wie mache ich das ?

Und ein zweites Problem ist auch die Eingabe:

Wenn ich über ein Formular einen neuen Datensatz eingebe, dann gibt der Benutzer ja auch das Datum im Format tt.mm.yyyy ein. Nur wie kann man das umwandeln, dass das Datum dann auch richtig in der DB gespeichert wird ?

Vielen Dank !
Sebastian

  1. Hallo Sebastian, wandle die Formate doch um:

    *Datum von TT.MM. in JJJJ-MM-TT umwandeln*/
    //$datum der Form tt.mm.
    $datum_new = "2003-".$datum[3].$datum[4]."-".$datum[0].$datum[1];

    Ich hoffe, ich konnte dir helfen.

    Gruß Oliver

    1. Hallo,

      ich habe da eine bzw. mehrere kleine Funktionen gefunden, allerdings weiss ich als PHP-Newie erhlich gesagt nicht wie genau ich die einbinden muss. habe ich einfach mal dran versucht. beim anzeigen der Seite im Browser wird mir allerdings anstatt des eigentlich in der DB stehenden Datum nur 00.00.0000 angezeigt.

      Danke für jeden Tip !

      MFG
      Sebastian

      Hier mal mein Code:

      <?php require_once('Connections/conAbwesenheit.php'); ?>

      <?php
      /**
       * date_mysql2german
       * wandelt ein MySQL-DATE (ISO-Date)
       * in ein traditionelles deutsches Datum um.
       */
      function date_mysql2german($datum) {
          list($jahr, $monat, $tag) = explode("-", $datum);

      return sprintf("%02d.%02d.%04d", $tag, $monat, $jahr);
      }

      /**
       * date_german2mysql
       * wandelt ein traditionelles deutsches Datum
       * nach MySQL (ISO-Date).
       */
      function date_german2mysql($datum) {
          list($tag, $monat, $jahr) = explode(".", $datum);

      return sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);
      }

      /**
       * timestamp_mysql2german
       * wandelt ein MySQL-Timestamp
       * in ein traditionelles deutsches Datum um.
      */
      function timestamp_mysql2german($vom) {
          return sprintf("%02d.%02d.%04d",
                          substr($t, 6, 2),
                          substr($t, 4, 2),
                          substr($t, 0, 4));
      }

      ?>

      <?php
      mysql_select_db($database_conAbwesenheit, $conAbwesenheit);
      $query_Recordset1 = "SELECT * FROM daten WHERE date_format(NOW(), '%d.%m.%y') BETWEEN date_format(vom, '%d.%m.%y') AND date_format(bis, '%d.%m.%y')";
      $Recordset1 = mysql_query($query_Recordset1, $conAbwesenheit) or die(mysql_error());
      $row_Recordset1 = mysql_fetch_assoc($Recordset1);
      $totalRows_Recordset1 = mysql_num_rows($Recordset1);
      ?>

      <html>
      <head>
      <title>Untitled Document</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      </head>

      <body>
      <p><font size="3" face="Arial, Helvetica, sans-serif"><?php echo $row_Recordset1['Vorname']; ?><br>
        <?php echo $row_Recordset1['Nachname']; ?> <br>
        </font> <?php echo $dbdatum = date_mysql2german($dbdatum); ?> </p>
      </body>
      </html>
      <?php
      mysql_free_result($Recordset1);
      ?>

  2. Hi Sebastian!

    In der offiziellen PHP-Dokumentation gibt's die date()-Funktion, mit der du Datumsangaben formatieren kannst.
    http://www.php.net/manual/de/function.date.php

    Dein Beispiel müsste dann in etwa so aussehen:

    $datum_neu = date("d.m.Y",$datum)

    Mfg
    Elessar

    --
    sh:( fo:) ch:{ br:> n4:° ie:% mo:} va:) de:] zu:) fl:( ss:) ls:[ js:|
    1. Hallo Elessar,

      dann wird mir nur 01.01.70 ausgegeben obwohl in der DB drinsteht 2003-07-01

      Wieso ?

      Was ist falsch oder fehlt in meinem Quellcode ? (Siehe meinen vorherigen Beitrag am Thread)

      Danke für Deine (Eure) Mühe !

      MFG
      Sebastian

      1. hi,

        dann wird mir nur 01.01.70 ausgegeben obwohl in der DB drinsteht 2003-07-01
        Was ist falsch oder fehlt in meinem Quellcode ? (Siehe meinen vorherigen Beitrag am Thread)

        dein verständnis ist falsch.
        die art von timestamp, die mysql verwendet, und die art, die php verwendet (unix-timestamp), sind nicht identisch.

        gruss,
        wahsaga

  3. Hallo Sebastian,

    Wenn ich nun diese Spalten als Text auf der PHP ausgeben möchte, so wird mir dieser im Format yyyy-mm-dd ausgegeben. Gibt es eine Möglichkeit diesen auch im Deutschen Format tt.mm.yyyy auszugeben ?

    ja - gib bei SELECT nicht den Spaltennamen an, sondern sowas wie DATE_FORMAT(spaltenname,"%e.%c.%Y") as dedatum
    siehe auch http://www.mysql.de/doc/de/Date_and_time_functions.html und http://www.mysql.de/doc/de/SELECT.html

    Wenn ich über ein Formular einen neuen Datensatz eingebe, dann gibt der Benutzer ja auch das Datum im Format tt.mm.yyyy ein. Nur wie kann man das umwandeln, dass das Datum dann auch richtig in der DB gespeichert wird ?

    ich mach das so, dass ich den String an den Punkten Trenne (mit explode()) und ihn dann wieder "mysql-gerecht" zusammenbaue - vielleicht gibt es aber auch noch eine bessere Variante :-)

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo,

      siehe meinen Quelltext in einem Beitrag an diesem Thread. Dort mache ich das mit dem date_format schon !

      MFG
      Sebastian

      1. Hallo Sebastian,

        siehe meinen Quelltext in einem Beitrag an diesem Thread. Dort mache ich das mit dem date_format schon !

        jain - du verwendest es zwar im WHERE-Teil nicht aber im SELECT-Teil - wenn du es im SELECT-Teil verwendest (statt des Sternchens ->http://dclp-faq.de/q/q-sql-select.html) kannst du dir die Umformerei mit php sparen.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|