[PHP5] Uhrzeit wird nicht vollständig in die Tabelle geschrieben

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

  • [PHP5] Uhrzeit wird nicht vollständig in die Tabelle geschrieben

    Hallo zusammen,

    Ich habe ein weiteres Problem:

    Ich möchte in ein Datenbankfeld einfach die Uhrzeit hineinschreiben sobald ein neuer Datensatz eingefügt wird. Hierfür habe ich folgenden Quellcode

    PHP-Code:
    $zeit time();



    $sqlab "insert auszahlung";
    $sqlab .= "(Beguenstigter, Ziel, Eisen, Titan, Legierungen, Kristall, Deuterium, Gesamt, Zeit_Datum) values ";
    $sqlab .= "('" $_POST["user_nickname"] . "', ";
    $sqlab .= "'" $_POST["ziel"] . "', ";
    $sqlab .= $_POST["eisen"] . ", ";
    $sqlab .= $_POST["titan"] . ", ";
    $sqlab .= $_POST["legierungen"] . ", ";
    $sqlab .= $_POST["kristall"] . ", ";
    $sqlab .= $_POST["deuterium"] . ", ";
    $sqlab .= ceil($gesamt) . ", ";
    $sqlab .= "'" strftime("%d.%m.%Y %H:%M:%S",$zeit) . "')";



    mysql_query($sqlab) OR die(mysql_error().'<br />'.$sqlab); 
    Ich wäre über Hilfe oder Denkanstöße sehr erfreut.

    MfG

    Para

  • #2
    Hi,
    setz in der Datenbank doch einfach nen timestamp 'on update'

    Kommentar


    • #3
      das habe ich schon versucht aber dann habe ich folgendes ergebnis:

      12 admin 0 0 0 5 0 0 5 20070914093404 <--- das ist der Timestamp...ist zwar das richtige datum und uhrzeit usw, aber total unformatiert.

      Kommentar


      • #4
        stell in der db mal den typ zusätzlich auf timestamp...

        Kommentar


        • #5
          Mal langsam...
          von welchem Spaltentyp ist Zeit_Datum ?
          Wenn es was anderes als timestamp oder datetime ist, ist das schon falsch - dann gilt es zu korrigieren.
          Wenn du bei jedem Update des Datensatzes auch den Timestamp aktualisieren willst, bietet sich timestamp an (siehe http://dev.mysql.com/doc/refman/5.0/en/timestamp.html), allerdings abhängig von deiner MySQL-Version!

          Und so fügt man keine Timestamps in die Datenbank ein:
          strftime("%d.%m.%Y %H:%M:%S",$zeit)
          Die müssen so formatiert sein, wie man sie auch zurück kriegt, d.h.
          YYYY-MM-DD HH:MM:SS

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            also nochmal:

            Bei diesem Quellcode hatte ich den Datentyp auf DATETIME

            PHP-Code:
            $zeit time();



            $sqlab "insert auszahlung";
            $sqlab .= "(Beguenstigter, Ziel, Eisen, Titan, Legierungen, Kristall, Deuterium, Gesamt, Zeit_Datum) values ";
            $sqlab .= "('" $_POST["user_nickname"] . "', ";
            $sqlab .= "'" $_POST["ziel"] . "', ";
            $sqlab .= $_POST["eisen"] . ", ";
            $sqlab .= $_POST["titan"] . ", ";
            $sqlab .= $_POST["legierungen"] . ", ";
            $sqlab .= $_POST["kristall"] . ", ";
            $sqlab .= $_POST["deuterium"] . ", ";
            $sqlab .= ceil($gesamt) . ", ";
            $sqlab .= "'" strftime("%d.%m.%Y %H:%M:%S",$zeit) . "')";



            mysql_query($sqlab) OR die(mysql_error().'<br />'.$sqlab); 
            aber da wird mir das datum dann irgendwie nicht ganz angezeigt:

            14.09.2007 10:

            nach "10:" zeigt er nichts mehr an?! keine ahnung wieso.

            MySQL version ist übrigens 4.0

            Und wenn ich den Datentyp auf Timestamp setze, dann bekomme ich folgende ausgabe:

            20070914092734

            lässt sich der Timestamp formatieren oder ist der immer so zusammen geschrieben?

            Kommentar


            • #7
              hiho,
              also wenn du den timestamp on update machst,
              brauchst du gar keine eigenen Einträge zu machen.. die db erledigt das für dich.


              wenn du aber einen eigenen timestamp einfügen willst formatier ihn

              ("Y-m-d h:i:s")

              Kommentar


              • #8
                Guck dir auch mal NOW() an.

                Kommentar


                • #9
                  wenn ich das gerade richtig recherchiert habe, gibt MySQL 4.0 den Timestamp leider absolut unformatiert aus. Also fällt diese Möglichkeit schonmal weg. Das heißt ich mache einen eigenen Zeitabruf.

                  Das habe ich ja auch schon:

                  PHP-Code:
                  $zeit time();  // Hier wird die Systemzeit abgefragt richtig?



                  $sqlab "insert auszahlung";
                  $sqlab .= "(Beguenstigter, Ziel, Eisen, Titan, Legierungen, Kristall, Deuterium, Gesamt, Zeit_Datum) values ";
                  $sqlab .= "('" $_POST["user_nickname"] . "', ";
                  $sqlab .= "'" $_POST["ziel"] . "', ";
                  $sqlab .= $_POST["eisen"] . ", ";
                  $sqlab .= $_POST["titan"] . ", ";
                  $sqlab .= $_POST["legierungen"] . ", ";
                  $sqlab .= $_POST["kristall"] . ", ";
                  $sqlab .= $_POST["deuterium"] . ", ";
                  $sqlab .= ceil($gesamt) . ", ";
                  $sqlab .= "'" strftime("%d.%m.%Y %H:%M:%S",$zeit) . "')"// und hier wird das Ganze eigentlich formatiert



                  mysql_query($sqlab) OR die(mysql_error().'<br />'.$sqlab); 
                  Aber wie ich ja schonmal gesagt habe, gibt er die Zeit nicht ganz aus, sondern nur bis 14.09.2007 10: <---------- der rest fehlt?!

                  Kommentar


                  • #10
                    Oh man... So ein Quatsch!!!

                    Ist doch latte, wie die Zeit gespeichert wird. Wozu gibt es die Datumsfunktionen (s. Manual) von MySQL?? DATE_FORMAT bringt deine Zeit in das gewünschte Format. Sonst nix!

                    Kommentar


                    • #11
                      und was mach ich mit diesem DATE_FORMAT?

                      sorry für die blöde frage aber....muss ich das in meinem PHP script defienieren oder in der Datenbank? Und wenn ja, wie? aus dem manual werd ich auch nich schlau

                      MfG

                      Para

                      Kommentar


                      • #12
                        ...muss ich das in meinem PHP script defienieren oder in der Datenbank?
                        Genau dort wo du die Query an die DB absetzt. Wenn du die mit JS machst dann im JS Teil, wenn PHP im PHP Teil, wenn Java dann im Javateil etc ppt
                        PHP-Code:
                        $sql "SELECT date_format(deineDatumsSpalte,'gewünschtes Format') AS datum FROM table WHERE cond=cond"
                        http://dev.mysql.com/doc/refman/5.1/...functions.html

                        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


                        • #13
                          Ist das so richtig?


                          PHP-Code:
                          $zeit time();



                          $sqlab "insert auszahlung";
                          $sqlab .= "(Beguenstigter, Ziel, Eisen, Titan, Legierungen, Kristall, Deuterium, Gesamt) values ";
                          $sqlab .= "('" $_POST["user_nickname"] . "', ";
                          $sqlab .= "'" $_POST["ziel"] . "', ";
                          $sqlab .= $_POST["eisen"] . ", ";
                          $sqlab .= $_POST["titan"] . ", ";
                          $sqlab .= $_POST["legierungen"] . ", ";
                          $sqlab .= $_POST["kristall"] . ", ";
                          $sqlab .= $_POST["deuterium"] . ", ";
                          $sqlab .= "'".ceil($gesamt) . "') ";


                          $sql "SELECT date_format(Zeit_Datum,'%d.%c.%Y - %H:%i:%s') AS datum FROM auszahlung WHERE ";

                          mysql_query($sql);


                          mysql_query($sqlab) OR die(mysql_error().'<br />'.$sqlab); 
                          Aber was geb ich denn hinter WHERE ein? Es wird ja ein neuer Datensatz angelegt.

                          Kommentar


                          • #14
                            Stell nach dem INSERT Statement erstmal die letzte ID der Tabelle fest und verwende diese nachher als Bedinung im SELECT.
                            http://ch2.php.net/manual/de/functio...-insert-id.php

                            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


                            • #15
                              Suche Grundlagen, hat die jemand gefunden?

                              Kommentar

                              Lädt...
                              X