Ankündigung

Einklappen
Keine Ankündigung bisher.

Datum und zeit in mysql-Datenbank eintragen

Einklappen

Neue Werbung 2019

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

  • Datum und zeit in mysql-Datenbank eintragen

    Hallo liebe php'ler!

    Ich habe folgendes Problem.
    Ich habe über ein php-Script das aktuelle Datum und die aktuelle Zeit ausgelesen und in jeweils eine Variable gespeichert.
    Gebe ich diese mit echo $datum bzw. echo $time aus, läuft alles wunderbar.
    Möchte ich jedoch das datum und die zeit in die Datenbank schreiben, passiert nichts und die defaulteinstellungen der Spalten, die ich mit date und time formatiert habe, behalten 0000-00-00 bzw. 00:00:00.

    Folgendes Script verwende ich:

    PHP-Code:
    <?php

             $datum 
    date("Y-m-d");
             
    $zeit date("H:i:s");
             @
    mysql_query("UPDATE `eintragspruefer` SET `Pruefbit` = 2 WHERE `id` = $SpielerID;"); // 2 Übergeben und damit Fehlermeldung aufheben
             
    @mysql_query('UPDATE `eintragspruefer` SET `Datum` = $datum WHERE `id` = $SpielerID;'); // datum Übergeben
             
    @mysql_query('UPDATE `eintragspruefer` SET `Zeit` = $zeit WHERE `id` = $SpielerID;'); // zeit Übergeben 


    ?>
    Der Zugriff auf die Tabelle funktioniert, da das Pruefbit gesetzt wird.

    Was kann ich tun, dass endlich das Datum und die Zeit übergeben und in der Datenbank gespeichert wird.

    Über eure Hilfe würde ich mich sehr freuen.

    nicsen


  • #2
    Hi.

    Speicher doch einfach einen Timestamp in deiner Tabelle (PHP: time - Manual), dann hast Du Datum + Uhrzeit.

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Hallo wolf29!

      Danke für deine schnelle Antwort!

      Ich habe nun in phpmyadmin die Spalte Datum auf Timestamp umgestellt!
      Nun sieht default so aus: 0000-00-00 00:00:00! Ok, passt!

      Doch wie bekomme ich jetzt das $datum und die $zeit umgewandelt, damit ich sie dort eintragen bzw, dann wieder von dort auslesen kann?

      Sorry, da zeigt sich der php-Anfänger!

      Viele Grüße,
      nicsen

      Kommentar


      • #4
        Du kannst auch den timestamp Wert direkt in die Spalte eintragen und die Spalte als Integer Werten definieren. Wie Du einen timestamp umwandelst, siehst Du hier:

        PHP: date - Manual

        einfach die Beispiel dazu mal anschauen.

        Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          Das Abspeichern von Zeitstempeln ist sicher keine gute Idee, da du dann auf die hübschen Datumsfunktionen von MySQL verzichten musst.

          Stelle den Spaltentyp auf DATETIME. In der Spalte kannst du dann Datum und Uhrzeit zusammen speichern. Bei deinen UPDATE-Befehlen fehlen lediglich die Stringbegrenzer, das ist alles. Den Fehlerkontrolloperator (@) solltest du schleunigst entfernen und ein
          Code:
          echo mysql_error();
          nach deinen Abfragen kann auch nicht schaden.
          http://hallophp.de

          Kommentar


          • #6
            @Asipak: meinst Du performancemässig?

            Greetz Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Hallo zusammen!

              Danke für die vielen Tipps!
              Ich habe es soweit hinbekommen!

              Zumindest speichert er jetzt die Zeit und das Datum in die Spalte Datum.

              Folgende Lösung von mir:
              PHP-Code:
              <?php

                       $ts 
              mktime($stunde,$minute,$sekunde,$monat,$tag,$jahr);
                       
              $neu date('Y-m-d H:i:s'$ts);
                       @
              mysql_query("UPDATE `eintragspruefer` SET `Pruefbit` = 2 WHERE `id` = $SpielerID;"); // 2 Übergeben und damit keine Fehlermeldung
                       
              @mysql_query('UPDATE `eintragspruefer` SET `Datum` = $neu WHERE `id` = $SpielerID;'); // datum Übergeben


              ?>
              Der Timestamp ist vielleicht sogar gut, da ich abhängig von der Zeit bestimmte Symbole auf der Hauptseite laden lasse.

              Diese Seite hat mir dabei noch geholfen.

              Viele Grüße,
              nicsen

              Kommentar


              • #8
                Zitat von wolf29 Beitrag anzeigen
                @Asipak: meinst Du performancemässig?

                Greetz Wolf29
                Wenn du das Datum als Ganzzahl in einem Integerfeld hinterlegst, kannst du nicht mehr mit den MySQL-Datumsfunktionen arbeiten.

                Ich hatte das so aus deinem Posting #2 herausgelesen.
                http://hallophp.de

                Kommentar


                • #9
                  Hattest Du auch richtig rausgelesen! Aufgrund der Temperaturen hier auf Arbeit, fällt mir das denken doch etwas schwer und da bin ich froh, wenn mir überhaupt was einfällt!

                  Greetz Wolf29
                  while (!asleep()) sheep++;

                  Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                  Kommentar


                  • #10
                    Irgendwie kann ich nicht glauben, dass der gezeigte Code funktionieren soll Da fehlen doch schon wieder Stringbegrenzer, oder nicht? Und das Semikolon am Ende der Abfrage solltest du auch entfernen, @nicsen.

                    PHP: mysql_query - Manual

                    Hinweis: Die Anfrage sollte nicht mit einem Semikolon enden.
                    Und die Klammeraffen tummeln sich immer noch vor den Befehlen. Naja, wer nicht hören will... (...der kommt wieder ).
                    http://hallophp.de

                    Kommentar


                    • #11
                      Doch, es funktioniert.

                      Die Einträge sind in phpmyadmin zu sehen!

                      Was meinst du mit Integerfeld. In der Datenbank ist das Datumsfeld ein Timestamp, oder beziehst du dich auf eine der Variablen $ts oder $neu?

                      Ohne das @-Zeichen wird die query gar nicht abgearbeitet.
                      Habe ich mal irgendwo gelesen, weiß aber nicht mehr wo genau.

                      Viele Grüße,
                      nicsen

                      Kommentar


                      • #12
                        Das @-Zeichen unterdrückt nur evtl. Fehler und solltest Du rausnehmen, wie Asipak schon gesagt hat!

                        Wolf29
                        while (!asleep()) sheep++;

                        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                        Kommentar


                        • #13
                          Ok, du hattest recht, das @-zeichen lässt die Abfrage trotzdem ausführen.

                          Mit den Semikolons habe ich erstaml so gelassen, und sie gesetzt. Hat bisher keine Fehlermeldungen gegeben.

                          Jetzt muss ich daran basteln, dass ich Bildeinblendungen von der verstrichenen Zeit abhängig machen kann.

                          Mal sehen.

                          Viele Grüße,
                          nicsen

                          Kommentar


                          • #14
                            Mit den Semikolons habe ich erstaml so gelassen, und sie gesetzt. Hat bisher keine Fehlermeldungen gegeben.
                            Nimm Sie einfach raus. Wenn das in der PHP-Dokumentation steht, hast das auch seinen Grund!
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Mysql kann auch mehrere Spalten in einer Query Updaten und hat auch eine eingebaute Uhr:

                              PHP-Code:
                              $sql ="UPDATE `eintragspruefer` SET 
                                          `Pruefbit`     = 2,
                                          `Datum`     = now()
                                      WHERE 
                                          `id` = " 
                              $SpielerID;
                              mysql_query($sql) or die( mysql_error() ); 
                              PHP-Code:
                              if ($var != 0) {
                                
                              $var 0;

                              Kommentar

                              Lädt...
                              X