Formular Datum (DE) nach (ENG) in MYSQL konvertieren !

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

  • Formular Datum (DE) nach (ENG) in MYSQL konvertieren !

    hallo ihr lieben,

    habe mal wieder ein kleines problem mit meinem php script.

    möchte gerne mehrere datumswerte auf deutsch (09.02.07 oder 09.02.2007) in meine mysql datenbank speichern. in meiner datenbank habe ich das datum als date format bestimmt.
    die daten sollen per formular an die datenbank gesendet werden und es soll automatisch das deutsche datum in ein date format umgewandelt werden, sobald man das formular absendet.
    hier mal ein auschnitt wie ich meine daten an die datenbank sende.

    if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "shform")) {
    $insertSQL = sprintf("INSERT INTO aufnahme (station, fallnrpat, shg_am, she_am, fest_datum) VALUES (%s, %s, %s, %s, %s)",
    GetSQLValueString($HTTP_POST_VARS['station'], "text"),
    GetSQLValueString($HTTP_POST_VARS['fallnummer'], "text"),
    GetSQLValueString($HTTP_POST_VARS['gelegt_am'], "date"),
    GetSQLValueString($HTTP_POST_VARS['entfernt_am'], "date"),
    GetSQLValueString($HTTP_POST_VARS['infektion'], "date"));

    für eure hilfe bedanke ich mich jetzt schon.

    euer enzi01
    Zuletzt geändert von enzenpe; 09.02.2007, 12:53.

  • #2
    1. $_POST anstatt $HTTP_POST_VARS verwenden.
    2. Wandle das Datum per PHP um, bevor du dein INSERT machst. (Am . trennen, Reihenfolge umbauen und mit - als Trenner wieder zusammenbasteln)
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      danke für deine schnelle antwort.

      das mit punkt 1 versteh ich ja, aber das umwandel des datums versteh ich jetzt nicht.
      vieleicht kannst du mir noch einbisschen auf die sprünge helfen?

      Danke

      Kommentar


      • #4
        explode und implode benötigst für.
        Und evtl. die Forumssuche

        gruss
        Für Rechtschreibfehler übernehme ich keine Haftung!

        Kommentar


        • #5
          Das ist aber die falsche Vorgehensweise. Lass bitte das Format in der DB so wie es sein soll, also im englischen oder ISO Format. Bei der Ausgabe wird erst dann nach Bedarf formatiert.

          Kommentar


          • #6
            danke für die schnellen antworten.

            das format des datum soll sich ja auch nicht in der datenbank ändern es wird als date gespeichert.
            nur das datum aus meinem formular wird in ein deutsches format geschrieben und soll als englisches (date) gespeichert bzw. umgewandelt werden.
            wie kann ich das bewerkstelligen?

            vielen dank für die hilfen!
            Zuletzt geändert von enzenpe; 09.02.2007, 09:54.

            Kommentar


            • #7
              exlode am . (Punkt) und dann ein implode mit Trenner - (Bindestrich)
              it's not a bug,
              it's a feature!

              Kommentar


              • #8
                Original geschrieben von asp2php
                Bei der Ausgabe wird erst dann nach Bedarf formatiert.
                Und das dann wohl mit ex- und implode?
                Für Rechtschreibfehler übernehme ich keine Haftung!

                Kommentar


                • #9
                  PHP-Code:
                  $deinDat '23. 01. 2007';
                  $temp explode('.',$deinDat);
                  $neuDat $temp[1].'-'.$temp[0].'-'.$temp[2]; 
                  Mit implode() wüsste ich nicht wie es gehen sollte, weil dann das Datum ja genau gleich wäre (einfach mit anderen Trennzeichen)

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    hallo leute,

                    habe die lösung gefunden

                    im php script anlegen:

                    PHP-Code:
                    $date $_POST['gelegt_am']; 
                    $date_arr explode(' ',$date); 
                    $datum explode('.',$date_arr[0]);
                    $gelegt_am strtotime($datum[2].'-'.$datum[1].'-'.$datum[0]); 
                    und im insert diesen befehl:

                    $insertSQL = sprintf("INSERT INTO aufnahme (shg_am) VALUES (%s)",
                    GetSQLValueString(date('Y.m.d',$gelegt_am), "date");

                    ich hoffe das ich meinen Beitrag dazu leisten konnte.

                    nochmals an euch vielen lieben dank für eure hilfe.
                    euer enzi01

                    Kommentar


                    • #11
                      ein einfaches ex und imlpode reicht dort nicht.

                      PHP-Code:
                      $deutsches_Datum="21.09.2007";
                      $deutsches_Datum=explode(".",$deutsches_Datum);

                      //Kontrollausgabe
                      echo "<pre>";
                      var_dump($deutsches_Datum);
                      echo 
                      "</pre>";
                      //das var_dump Ergebnis
                      array(3) {
                        [
                      0]=>
                        
                      string(2"21"
                        
                      [1]=>
                        
                      string(2"09"
                        
                      [2]=>
                        
                      string(4"2007"
                      }

                      //Erzeugen des Falschen ISO Datum ^^
                      $ISO_Datum=implode("-",$deutsches_Datum);

                      echo 
                      $ISO_Datum;
                      //ausgabe 
                      21-09-2007 
                      laut meinem verständnis sieht ein date Datum in einer DB aber so aus

                      [COLOR=green]2007-09-21[/COLOR]

                      am einfachsten währe jetzt einfach das durch explode erzeugte Array umzudrehen.

                      Und zwar so
                      PHP-Code:
                      $deutsches_Datum="21.09.2007";
                      $deutsches_Datum=explode(".",$deutsches_Datum);

                      //Kontrollausgabe
                      echo "<pre>";
                      var_dump($deutsches_Datum);
                      echo 
                      "</pre>";
                      //das var_dump Ergebnis
                      array(3) {
                        [
                      0]=>
                        
                      string(2"21"
                        
                      [1]=>
                        
                      string(2"09"
                        
                      [2]=>
                        
                      string(4"2007"
                      }

                      //Erzeugen des richtigen ISO Datum^^
                      $ISO_Datum=implode("-",array_reverse($deutsches_Datum));

                      echo 
                      $ISO_Datum;
                      //ausgabe 
                      2007-09-21 
                      beim implode wird durch [COLOR=green]array_reverse()[/COLOR]
                      Das array einfach von hinten nach vorne an implode gegeben.

                      und zur kleinen Hilfe
                      ISO-8601

                      ich hab doch damit recht oder? sollte ich mich trotz nachprüfens und Ausprobieren gerade geirrt haben?

                      EDIT:

                      Waren da jetzt doch echt ein zwei leute Schneller.
                      Aber egal es geht auch mit Ex und Implode jedenfalls wenn man die daten rückwährts an implode gibt. was glück das es da eine array funktion für gibt.

                      Zuletzt geändert von Wyveres; 09.02.2007, 11:45.
                      Bitte Beachten.
                      Foren-Regeln
                      Danke

                      Kommentar

                      Lädt...
                      X