Announcement

Collapse
No announcement yet.

Reine Arbeitszeit ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Reine Arbeitszeit ermitteln

    Hallo liebe Helfende,

    ich bin Neueinsteiger in SQL und habe da ein Problem beim Berechnen der Arbeitszeit abzüglich der Pausen.

    In der DB habe ich 6 TIME-Felder -> Von, Bis, Pvon, Pbis, Pvon2, Pbis2

    Nach vielen Stunden Recherche im WWW habe ich dann eine Lösung gefunden, aber leider nur zum Teil :-(

    timeDIFF hat hier geholfen:


    Code:
     $sqlU = "UPDATE Zeiten SET
     Von = '" . $_SESSION['Von'] . "',
     Bis = '" . $_SESSION['Bis'] . "',
     PVon = '" . $_SESSION['PVon'] . "',
     PBis = '" . $_SESSION['PBis'] . "',
     PVon2 = '" . $_SESSION['PVon2'] . "',
     PBis2 = '" . $_SESSION['PBis2'] . "',
     Stunden = timeDIFF(timeDIFF( '" . $_SESSION['PVon'] . "' , '" . $_SESSION['PBis'] . "' ),timeDIFF( '" . $_SESSION['Von'] . "' , '" . $_SESSION['Bis'] . "'))
     WHERE
     PersNr = '" . $_SESSION['PersNr'] ."'
     AND AufNr = '" . $_SESSION['AufNr'] ."'";

    Es wird hier die 1. Pause korrekt abgezogen.

    Wenn ich nun die 2.Pause abziehen möchte, wird diese leider dazu addiert !!

    Code:
    $sqlU = "UPDATE Zeiten SET
    Von = '" . $_SESSION['Von'] . "',
    Bis = '" . $_SESSION['Bis'] . "',
    PVon = '" . $_SESSION['PVon'] . "',
    PBis = '" . $_SESSION['PBis'] . "',
    PVon2 = '" . $_SESSION['PVon2'] . "',
    PBis2 = '" . $_SESSION['PBis2'] . "',
    Stunden = timeDIFF(timeDIFF(timeDIFF( '" . $_SESSION['PVon'] . "' , '" . $_SESSION['PBis'] . "' ),timeDIFF( '" . $_SESSION['Von'] . "' , '" . $_SESSION['Bis'] . "')),timeDIFF(  '" . $_SESSION['PVon2'] . "' , '" . $_SESSION['PBis2'] . "'))
    WHERE
    PersNr = '" . $_SESSION['PersNr'] ."'
    AND AufNr = '" . $_SESSION['AufNr'] ."'";
    Wer kann hier den Fehler entdecken ?

    Oder gibt es eine andere Möglichkeit der Berechnung ?

    Vielen Dank für Eure Hilfe.

    LG

    Lynn
    Zuletzt editiert von Christian Marquardt; 02.02.2020, 06:37. Reason: Code formatiert

  • #2
    Vielleicht solltest du
    - keine Datenbankfelder mit $_SESSION[] befüllen -> SQL Injektion
    - in einem SQL Forum den SQL zeigen und nicht den PHP-Code
    - den reinen SQL erst ausprobieren (SQLWorkbench, MyPHPAdmin) und dann in PHP einarbeiten
    - beschreiben, wie du die Pausen abziehen möchtest

    Ursache könnte sein, dass in deinem 2. SQL Pause von Zeit abgezogen wird
    timeDIFF(timeDIFF( '" . $_SESSION['PVon'] . "' , '" . $_SESSION['PBis'] . "' ),timeDIFF( '" . $_SESSION['Von'] . "' , '" . $_SESSION['Bis'] . "'))

    Stunden=Arbeitszeit-Pause1-Pause2
    Stunden =(ArbeitszeitEnde-ArbeitszeitStart)-(Pause1Ende-Pause1Start)-(Pause2Ende-Pause2Start)
    Zuletzt editiert von Christian Marquardt; 02.02.2020, 11:11.
    Christian

    Comment


    • Lynn
      Lynn commented
      Editing a comment
      Hallo Christian,

      vielen Dank für Deine Vorschläge.

      Wie soll ich denn von der Webseite die Daten sonst abfragen, wenn nicht mit $_SESSION[] ?
      Aber $_SESSION[] funktioniert ja mit der ersten Pause einwandfrei :-( hmmmm

      Wie ich bereits geschrieben habe, wird die 2.Pause nicht abgezogen, sondern addiert, das ist ja das Problem ;-)

      Also wie ich die Pausen abgezogen haben möchte ??
      hmmmmm
      Eigentlich ganz einfach nach der Logik von Adam Riese: Zeit- Pause - Pause, oder Zeit - (Pause + Pause)

      LG
      Lynn

  • #3
    Schreibe keine Kommentare, sondern einen neuen Beitrag

    SQL Injection -> in dem du die Werte aus der Session expliziten Variablen zuordnest und dann ein prep. Statement benutzt
    https://www.php-einfach.de/experte/p...ql-injections/

    https://www.php.net/manual/en/pdo.pr...statements.php

    Stunden=Arbeitszeit-Pause1-Pause2
    Stunden =(ArbeitszeitEnde-ArbeitszeitStart)-(Pause1Ende-Pause1Start)-(Pause2Ende-Pause2Start)
    Christian

    Comment


    • #4
      Hallo Christian,

      dank Deiner Denkanstöße bin ich auf die Lösung (ADDTIME) gekommen, vielen Dank dafür.
      Code:
      $sqlU = "UPDATE Zeiten SET
      Von = '" . $_SESSION['Von'] . "',
      Bis = '" . $_SESSION['Bis'] . "',
      PVon = '" . $_SESSION['PVon'] . "',
      PBis = '" . $_SESSION['PBis'] . "',
      PVon2 = '" . $_SESSION['PVon2'] . "',
      PBis2 = '" . $_SESSION['PBis2'] . "',
      Stunden = ADDTIME (ADDTIME ( timeDIFF( '" . $_SESSION['PVon'] . "','" . $_SESSION['PBis'] . "') ,timeDIFF( '" . $_SESSION['PVon2'] . "','" . $_SESSION['PBis2'] . "')), timeDIFF( '" . $_SESSION['Bis'] . "','" . $_SESSION['Von'] . "'))
      WHERE PersNr = '" . $_SESSION['PersNr'] . "'
      AND AufNr = '" . $_SESSION['AufNr'] . "'";
      LG

      Lynn

      Comment


      • #5
        schön wenns geht....
        Zuletzt editiert von Christian Marquardt; 02.02.2020, 14:32.
        Christian

        Comment

        Working...
        X