PHP timestamp in datenbank speichern

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP timestamp in datenbank speichern

    ich hab ne tabelle die die letzte modifizierung gespeichert wird.
    hab die spalte LastModified genannt und hab als typ timestamp(14) angegeben.

    um nen neuen timestamp zu setzen hab ich folgenden sql string in php

    $sql = 'UPDATE t_update SET LastModified = \'' . time() . '\'';

    leider steht in der tabelle weiterhin nur 00000000
    das sql statement scheint aber korrekt zu sein da ich es mit echo ausgegeben hab und dann manuelle in phpmyadmin ausgeführt hab (gab keine fehlermeldung)

    kann mir jemand sagen was ich jetzt schon wieder falsch gemacht hab?

  • #2
    hmm,

    der 14er timestamp ... YYYYMMDDHHMMSS ... time liefert allerhöchstens die UNIX-time seit ... 70 ... versucht einfach mal, NULL einzutragen ...
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      und welchen typ soll ich in der datenbank angeben?
      weil ich brauch nen timestamp mit bis auf die sekunden bzw mikrosekunden

      Kommentar


      • #4
        Original geschrieben von st@tic
        und welchen typ soll ich in der datenbank angeben?
        weil ich brauch nen timestamp mit bis auf die sekunden bzw mikrosekunden
        na den 14er timestamp!? wenn du microsekunden auch noch willst, ... vorher zusammenrechnen oder noch ein feld ... da microtime() afaik einen 'komischen' wert (zwo werte) erzeugt.

        du sollst in die spalte NULL eintragen, da dann automatisch aktuelles datum verwendet wird ... oder auch nur änderungen in der zeile vornehmen, der timestamp wird autom. aktualisiert ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Re: PHP timestamp in datenbank speichern

          Original geschrieben von st@tic
          kann mir jemand sagen was ich jetzt schon wieder falsch gemacht hab?
          du hast dich offenbar nicht informiert, dass mysqls datentyp TIMESTAMP und der UNIX TIMESTAMP von php zwei vollkommen verschiedene werte sind.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            und wie mach ich es richtig?

            Kommentar


            • #7
              Original geschrieben von st@tic
              und wie mach ich es richtig?
              lies du die antworten? stehe ich auf deiner ignore-list?

              richtig machst du es, indem du im manual schaust ....
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Original geschrieben von derHund
                lies du die antworten? stehe ich auf deiner ignore-list?

                richtig machst du es, indem du im manual schaust ....
                irgendwie schlecht gelaunt heute morgen?
                so ich wie ich das jetzt verstanden hab einfach typ in der db ändern und gut is.
                ich werd kurz nochmal ins manual reinschauen vielleicht find ich ja die antwort.
                aber so umständlich wäre es doch eigentlich nicht gewesen mal kurz nen lösungs ansatz zu schreiben.

                im übrigen in der db steht bei Null Ja und bei Standart NULL

                Kommentar


                • #9
                  irgendwie schlecht gelaunt heute morgen?
                  nö.
                  so ich wie ich das jetzt verstanden hab einfach typ in der db ändern und gut is.
                  lies mal die letzte zeile in asp's signatur ...

                  ich hab im ersten post 'die lösung' gepostet
                  im zweiten hab ichs nochmal näher ausgeführt

                  im manual müßte sowas stehen: tragen sie NULL ein, um den aktuellen timestamp zu verwenden ... aktualisieren sie die spalte, so wird automatisch des erste timestamp-feld aktualisiert ...
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    Tabelle auf int(11) setzen und das wars.
                    http://www.newssystem4u.de
                    http://www.flashking.de

                    Kommentar


                    • #11
                      Original geschrieben von pr0
                      Tabelle auf int(11) setzen und das wars.
                      Oder timestamp(14) lassen und mysql den Rest erledigen lassen. Wenn ein Datensatz angelegt wird, wird dann automatisch die aktuelle Uhrzeit eingetragen. Da du aber den Wert explizit ändern willst bringt dir das nix. Daher ist der Weg mit int(11) in diesem Fall der richtige. Du könntest natürlich den Datensatz updaten. Auch dann wird der timestamp neu gesetzt. Meiner Meinung nach ist der Umgang mit einem Unix-Timestamp angenehmer. Den kann man später viel besser verwenden (z.B. gleich mit date() formatieren etc.). Na klar, das geht auch mit den MySQL-Funktionen, aber dann kannst Du für jedes DBMS den SQL-Befehl ändern, da jede DB da ihr eigenes System hat.
                      Eine Programmierung mit dem kleinsten gemeinsamen Nenner bei DB-Funktionen und einem ordentlichen Wrapper (PEAR-DB / AdoDB) ist immer sinnvoll, um möglichst protabel zu sein. Vielleicht willst Du ja mal PostgreSQL oder Oracle einsetzen. Dann fällst Du mit Deinem Timestamp auf die Schn*.

                      Quintessenz: int als Feldtyp nehmen und den Unix-Timestamp reinschreiben.

                      (Eigentlich hätte ich mir die Antwort auch sparen können *g* )

                      -christoph-
                      Ich denke, also bin ich.
                      Manche sind trotzdem!

                      Kommentar


                      • #12
                        ok jetzt hab ich das verstanden mit dem NULL

                        hab jetzt nur noch ein problem der generiert mir dann so einen lustigen timestamp allerdings weiß ich net wie ich den gleichen mit php generiere
                        time oder date liefern mir nur 10 stellige zahlenreihen und net 14stellige

                        achso und ich hab ne extra tabelle angelegt für die updates da die sowieso quasi global gelten und per sql befehl string in php upgedatet werden klingt etwas bescheuert aber für meine zwecke reicht die lösung vorrausgesetzt ich krieg das noch hin das time oder date oder ne andere funktion in php auch 14stellige timestamps erzeugen

                        Kommentar


                        • #13
                          Original geschrieben von st@tic
                          hab jetzt nur noch ein problem der generiert mir dann so einen lustigen timestamp allerdings weiß ich net wie ich den gleichen mit php generiere
                          time oder date liefern mir nur 10 stellige zahlenreihen und net 14stellige
                          du möchtest dir im mysql-manual mal anschauen, wie das format von TIMESTAMP aussieht;
                          und anschliessend möchtest du dir beim date()-befehl von php anschauen, wie du einen UNIX-timestamp damit derart formatierst, dass er wie der mysql-TIMESTAMP aussieht.


                          (ich hoffe mal, dass alle anderen sich jetzt geschlossen halten und keine fertigen lösungen posten, sondern dich mal selber etwas herausfinden lassen.)
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            der unixtimestamp hat 14 ziffern
                            die funktion time() in php hat 10 ziffern
                            die funktion date mit dem parameter U hat ebenfalls 10 ziffern

                            U Sekunden seit Beginn der UNIX-Epoche (January 1 1970 00:00:00 GMT) Siehe auch time()
                            das is das einzige was ich zu date gefunden hab was meiner meinung nach passt. allerdings wird wie eben erwähnt 10 ziffern...

                            wäre wirklich nett wenn mir jemand noch etwas weiter helfen könnte, ich häng imo total fest...

                            Kommentar


                            • #15
                              wäre wirklich nett wenn mir jemand noch etwas weiter helfen könnte, ich häng imo total fest...
                              alle relevanten informationen wurden in diesem thread gegeben, cst hat dir einen ausführlichen artikel dazu verfaßt ...

                              der unixtimestamp hat 14 ziffern
                              der sql-timestamp? der YYYYMMDDHHMMSS?
                              achtung: die buchstaben wurde bewußt gewählt, sie repräsentieren den entsprechenden teil des datums (tip: y = year, ...).

                              die unix-time gibt die anzahl der sekunden seit 01.01.1970.

                              erkennst du den grundsätzlichen unterschied dieser beiden werte?

                              es wurden dir jetzt verschiedene möglichkeiten aufgezeigt, du kannst eine wählen und sie umsetzen.
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X