Timestampdifferenz

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

  • Timestampdifferenz

    Hallo!

    Ich möchte gerne meine Arbeitszeit in einer Tabelle speichern. Die Eingabe erfolgt über ein PHP-Script. Auf meinem Localen Rechner (Mysql Version 5.1) funktioniert das Script ohnen Probleme, doch auf meinem Server nicht (Mysql Version 4.0.27)

    meine Tabelle sieht so aus:
    CREATE TABLE daten(
    id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    taetigkeit TEXT NOT NULL,
    begin TIMESTAMP NOT NULL,
    ende TIMESTAMP NOT NULL,
    dauer TIMESTAMP NOT NULL,
    PRIMARY KEY(id)
    );


    Beim eintragen sende ich folgende Mysql-Anweisung:
    PHP-Code:
    $sql="INSERT INTO daten
        (taetigkeit,begin,ende,dauer)
        VALUES              ('
    $taetigkeit',TIMESTAMP('$begin'),TIMESTAMP('$ende'),
                    SUB('
    $ende','$begin')"
    wie müsste die Anweisung jetzt aussehen, dass sie bei der Mysql-Version 4.0.27 läuft?
    Ich habe schon zig versuche hinter mir, allerdings ohnen erfolg.
    Den Timestamp-string, welcher eingetragen wird, habe ich von z.B 2006-10-10 15:10:10 auf 20061010151010 geändert.

  • #2
    Das macht man aber nicht. Es reicht völlig aus, wenn du Beginn und Ende in die DB einträgst, die Differenz wird nur bei Bedarf ermitteln und soll nicht irgendwo abgelegt werden, da sie von Beginn und Ende abhängig ist, somit entstehen zu viel Aufwand und Fehlerquellen, falls eine Zeitkorrektur notwendig wäre.

    Kommentar


    • #3
      Ok, für das nächste mal werde ich es mir merken. Allerdings steht jetz schon das ganze Script(hizufügen,editieren und löschen von Daten), und ich möchte es jetzt auch nicht mehr ändern.

      Die PHP Datei sieht so aus:
      PHP-Code:
      <?php
      session_start
      ();
      echo 
      "<link rel='stylesheet' type='text/css' href='style.css'>";
      if (isset(
      $_POST['sb']))
      {
          include(
      "config.php");
          
      $begin $_POST['by'].$_POST['bm'].$_POST['bt'].$_POST['bh'].$_POST['bi'].'00';
          
      $ende $_POST['ey'].$_POST['em'].$_POST['et'].$_POST['eh'].$_POST['ei'].'00';
          
      $taetigkeit $_POST['taetigkeit'];
          
      $dbhandler = @mysql_connect($DBHOST,$DBUSER,$DBPW)
                                      or die(
      "Die Verbindung 
      zur Datenbank konnte nicht hergestellt werden!"
      .$php_errormsg);
              @
      mysql_select_db($DB,$dbhandler);
          
      $sql="INSERT INTO daten
                      (taetigkeit,begin,ende,dauer)
                      VALUES
                      ('
      $taetigkeit',TIMESTAMP('$begin'),TIMESTAMP('$ende'),
                      '20061010121212')"
      //<- zu Testzwecken (normalerweise timestampdifferenz) 
                      
      echo $sql;
          
      $ergebnis = @mysql_query($sql);
          
      $ok_flag = @mysql_affected_rows();
          if(
      $ok_flag >0)
          {
              echo 
      "<table align='center' bgcolor='#000000' cellpadding='1' cellspacing='1'>
                  <tr><th>Der Eintrag war erfolgreich!</th>
      </tr>
                          <tr><td align='center'><a href='seite3.php'>Hier klicken</a>
      <br> um zur Eingabemaske zu gelangen.</td></tr>
                          </table>"
      ;
          }
          else
          {
              echo 
      "<table align='center' bgcolor='maroon' cellpadding='1' cellspacing='1'>
                  <tr><th>Fehler!</th></tr>
                          <tr><td align='center'><a href='seite3.php'>Hier klicken</a>
      <br>um einen weiteren Versuch zu starten ;-).</td></tr>
                          </table>"
      ;
          }
          @
      mysql_close($dbhandler);
      }
      else
      {
          echo 
      "Sie sind nicht berechtigt diese Seite zu besuchen!";
      }
      ?>
      Zur Kontrolle habe ich mir den $sql String ausgeben lassen. Er sieht so aus:
      INSERT INTO daten (taetigkeit,begin,ende,dauer) VALUES ('ghjfj',TIMESTAMP('20060715135900'),TIMESTAMP('20060715135900'), '20061010121212')

      Wie kann ich mir jetzt die Differenz berechnen, und warum funtioniert die sql Anweisung nicht?
      Zuletzt geändert von Kisi; 15.07.2006, 14:15.

      Kommentar


      • #4
        da du die Daten ohnehin clientseitig (php) aufbereitest, dann nimm mktime zur Bearbeitung der geposteten Daten, danach kannst du das Ergebnis direkt dem SQL-Server übertragen, ohne per SQL nochmals umrechnen zu müssen.

        Kommentar


        • #5
          clientseitig (php)
          irgendwas ist hier faul ....
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Original geschrieben von Abraxax
            irgendwas ist hier faul ....
            ja, das bist du

            php läuft auf dem Webserver, welches mit dem Database Server kommuniziert, also ist in diesem Fall der Webserver der Client und der SQL-Server eben der Server und weil php auf dem Webserver läuft, ist es clientseitig. Alles klar?

            Kommentar


            • #7
              OffTopic:
              dann will ich das mal so stehen lassen ...
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar

              Lädt...
              X