Sebastian: Eingabe von Daten

Hallo,

ich habe ein PHP-Formular, mit dem ich Datensätze in eine MySQL-DB eingebe. Unteranderem muss der Anwender auch zweimal ein Datum eingeben. Und das im Deutschen Format, also dd.mm.yyyy.

Nun besteht das Problem, das die beiden Datumsspalten ('vom' und 'bis') in der DB als DATE formatiert sind und das bedeutet das alle neuen Eingaben im SQL-Format yyyy-mm-dd gespeichert werden. Nun habe ich Funktionen gefunden die man in die PHP-Seite einbinden kann. Mit diesen Funktionen lassen sich Daten umformatieren.

Hier erstmal die Funktionen:

######################################
######### datumsfunktionen ###########
######################################

/**
* 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);
}

########### ende der functions #############

So, nun weiss ich nur nicht wie ich diese Funktion speziell für Eingabe von Daten in Datumsfelder nutzen muss.

Beschrieben wird für die Eingabe nur folgendes:

beispiel 2: wir geben in ein textfeld (formular) das datum 07.04.2003 ein und schreiben es in die db

$formdatum = date_german2mysql($formdatum);

// es wird 2003-04-07 in die db geschrieben

Leider weiss ich jetzt nicht wie und wo ich dieses einbinden muss und vorallem woher die Funktion weiss, welches Textfeld wo das Datum drinsteht umwandeln muss.

Wer könnte mir helfen ??

Danke !

MFG
Sebastian

  1. Hallo,

    Hi

    ich wills mal versuchen

    ich habe ein PHP-Formular, mit dem ich Datensätze in eine MySQL-DB eingebe. Unteranderem muss der Anwender auch zweimal ein Datum eingeben. Und das im Deutschen Format, also dd.mm.yyyy.

    Du hast also ein HTML Formular uns gibst in einem input mit dem name Datum ein Datum im Format 1.1.2003 ein.

    Nun besteht das Problem, das die beiden Datumsspalten ('vom' und 'bis') in der DB als DATE formatiert sind und das bedeutet das alle neuen Eingaben im SQL-Format yyyy-mm-dd gespeichert werden. Nun habe ich Funktionen gefunden die man in die PHP-Seite einbinden kann. Mit diesen Funktionen lassen sich Daten umformatieren.

    Nach dem Abschicken machst du folgendes:

    if($Datum)
    {
      $dArr = explode(".",$Datum);
      $Datum = $dArr[2].'-'.$dArr[1].'-'.$dArr[0];
    }

    Dannach ist die var $Datum "übersetzt" ich hoffe es hilft.

    1. Hallo,

      also nach dem Absenden den Code einfügen. Nur an welcher Stelle ist im Quelltext ist das ?

      Sorry für die Newbie-Frage ;-)

      MFG
      Sebastian

      1. wenn du ein Formular per POST

        <form METHOD="POST" action="..." ..>

        verschickt hast sind auf der folgenden Seite alle Foremularfelder direkt als variablen verfügbar.

        also kannst du ggf. dein datums Feld heißt Datum mit $Datum auf den Inhalt zugreifen.

        scheibst du am anfang des Scriptes

        if($Datum) wird die falls bedingung nur ausgeführet, wenn $Datum überhaupt einen Wert enthält.

        also alles an den Anfang des Scriptes.

        1. Hallo,

          also ob das mal richtig ist ? :-)

          Hier mal mein Form action Code:

          <form method="post" name="form1" action="<?php echo $editFormAction;
          if($Datum)
          {
            $dArr = explode(".",$Datum);
            $Datum = $dArr[2].'-'.$dArr[1].'-'.$dArr[0];
          }
          ?>">

          Was ist falsch, geht nähmlich noch nicjt !

        2. Hi,

          hier nochmal nachtragend der komplette Code ohne irgendeine Funktion:

          Eventuell kannst du mir anhand dieses Quellcodes ja erklären, wo und wie was hinkommt.

          Wäre Super !

          Danke !

          <?php require_once('Connections/conAbwesenheit.php'); ?>
          <?php
          function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
          {
            $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

          switch ($theType) {
              case "text":
                $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
                break;
              case "long":
              case "int":
                $theValue = ($theValue != "") ? intval($theValue) : "NULL";
                break;
              case "double":
                $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
                break;
              case "date":
                $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
                break;
              case "defined":
                $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
                break;
            }
            return $theValue;
          }

          $editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
          if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
            $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
          }

          if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
            $insertSQL = sprintf("INSERT INTO tblabwesenheit (ID, Vorname, Nachname, Grund, vom, bis) VALUES (%s, %s, %s, %s, %s, %s)",
                                 GetSQLValueString($HTTP_POST_VARS['ID'], "int"),
                                 GetSQLValueString($HTTP_POST_VARS['Vorname'], "text"),
                                 GetSQLValueString($HTTP_POST_VARS['Nachname'], "text"),
                                 GetSQLValueString($HTTP_POST_VARS['Grund'], "text"),
                                 GetSQLValueString($HTTP_POST_VARS['vom'], "date"),
                                 GetSQLValueString($HTTP_POST_VARS['bis'], "date"));

          mysql_select_db($database_conAbwesenheit, $conAbwesenheit);
            $Result1 = mysql_query($insertSQL, $conAbwesenheit) or die(mysql_error());
          }
          ?>
          <html>
          <head>
          <title>Unbenanntes Dokument</title>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
          </head>

          <body>
          <form method="post" name="form1" action="<?php echo $editFormAction; ?>">
            <table align="center">
              <tr valign="baseline">
                <td nowrap align="right"><div align="left">ID:</div></td>
                <td><input type="text" name="ID" value="" size="32">
                </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"><div align="left">Vorname:</div></td>
                <td><input type="text" name="Vorname" value="" size="32">
                </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"><div align="left">Nachname:</div></td>
                <td><input type="text" name="Nachname" value="" size="32">
                </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"><div align="left">Grund:</div></td>
                <td><input type="text" name="Grund" value="" size="32">
                </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"><div align="left">Vom:</div></td>
                <td><input type="text" name="vom" value="" size="32">
                </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"><div align="left">Bis:</div></td>
                <td><input type="text" name="bis" value="" size="32">
                </td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right"> </td>
                <td><input type="submit" value="Datensatz einfügen">
                </td>
              </tr>
            </table>
            <input type="hidden" name="MM_insert" value="form1">
          </form>
          <p> </p>
          </body>
          </html>

        3. KEINER EINE IDEE ????

          MFG
          Sebastian

          1. hi,

            KEINER EINE IDEE ????

            1. schreib hier bitte icht rum.
            2. wenn du die logik deines eigenen scriptes verstehst, solltest du auch wissen, wo du welche umformatierungen für das datum einzubauen hast. wenn nicht - wieso nicht ...?

            gruss,
            wahsaga

  2. /**
    * date_mysql2german
    * wandelt ein MySQL-DATE (ISO-Date)
    * in ein traditionelles deutsches Datum um.
    */
    function date_mysql2german($datum) {

    Du kannst alternativ auch die MySQL-eigene Funktion date_format() verwenden:

    $sql="select date_format(datumsspalte,"%e.%c.%Y") from ...";

    Du erhältst dann direkt das gewünschte Format. MySQL bietet eine ganzes Sammelsurium an Funktionen, siehe http://www.mysql.com/doc/en/Functions.html

    /**
    * date_german2mysql
    * wandelt ein traditionelles deutsches Datum
    * nach MySQL (ISO-Date).
    */
    function date_german2mysql($datum) {

    So, nun weiss ich nur nicht wie ich diese Funktion speziell für Eingabe von Daten in Datumsfelder nutzen muss.

    Du stellst sie zwischen Übernahme aus dem Formular und Eingabe in die Datenbank. Du hast beispielsweise ein <input>-Eingabefeld namens geburtstag:

    $sql="insert into leute set geburtstag="".mysql_escape_string(date_german2mysql($_POST["geburtstag"])).""";

    Leider weiss ich jetzt nicht wie und wo ich dieses einbinden muss und vorallem woher die Funktion weiss, welches Textfeld wo das Datum drinsteht umwandeln muss.

    Deine Textfelder solltest _Du_ kennen, nicht die Funktion..

    Gruß,
      soenk.e