PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timeformate


cvb
21.08.2003, 11:05:36
Hallo,

ich habe ein unverständliches Problem. Ich schreibe gerade eine Zeiterfassung mit PHP und MySQL. Dort gibt es eine

Zeit von
Zeit bis
Pause

und aus diesen wird die Dauer errechnet. Wobei man auch nur die Dauer (als Dezimal) eingeben kann. Die Sachen werden berrechnet und die die Tabelle (MySQL) geschrieben. Alle Werte sind auf TIME gesetzt, außer Dauer, der verlangt ein Double.

Problem: Die Pause wird nicht richtig geschrieben. Hier das Skript:

//Berrechnung der Dauer anhand der Felder zeitvon/zeitbis - Pause

if($zeitvon!='' & $zeitbis!='')
{
$zeitbis = explode(":", $zeitbis);
$zeitbis = mktime($zeitbis[0],$zeitbis[1],0,1,1,1970);
$zeitvon = explode(":", $zeitvon);
$zeitvon = mktime($zeitvon[0],$zeitvon[1],0,1,1,1970);
$pause = explode(":", $pause);
//$pause[0] = gmdate("H", $pause[0]);
$pause = mktime($pause[0],$pause[1],0,1,1,1970);
$dauer = $zeitbis - $zeitvon - $pause;
$dauer = $dauer / 3600;

$zeitbis = date("H:i", $zeitbis);
$zeitvon = date("H:i", $zeitvon);
$pause = gmdate("H:i", $pause);

}
else
{
$zeitvon = '00:00:00';
$zeitbis = '00:00:00';
$pause = '00:00:00';
}

Was muss ich tun, damit die Dauer unter einer Stunde und über einer Stunde richtig erfasst wird?

Damir
21.08.2003, 12:46:12
Hi,
warum haendelst Du das nicht komplett ueber MySQL???? Erspart Dir doch viel Arbeit oder muss es unbedingt per PHP gemacht werden?

Bye Damir

cvb
21.08.2003, 13:24:16
wie würde ich das mit MySQL umsetzen können? Kann MySQL diese Berrechnung auch durchführen?

Damir
21.08.2003, 13:28:21
Kannst Du mal bitte an einem konkreten Beispiel erklaeren, wie das alles in der Realitaet ablaeuft - somit kann ich es besser aufschluesseln.

Bye Damir

cvb
21.08.2003, 13:43:28
1. Ich habe ein zweigeteilten Frameset. Oben Anzeige der erfassten Zeiten (von, bis, pause, dauer, projekt, bemerkung). Unten erfassungsformular (html) mit den gleichen daten.

2. die erfassten formulardaten werden (bei submit - Funktionsaufruf)nach dieser umwandlung (s. skriptbeispiel) über mysql_query in eine tabelle geschrieben.

3. danach geschieht ein refresh, der beide framefenster aktualisiert, so dass die neue erfasste zeit sichbar wird.

Damir
21.08.2003, 13:49:06
Ja aber was willst Du denn genau wissen????
Was heisst von, bis, Pause??? - Wie errechnet sich dieses (nicht pogrammiertechnisch, sondern aus menschlicher Perspektive gesehen.).

Bye Damir

cvb
21.08.2003, 14:00:11
Die Erfasser müssen die Zeiten von, bis und pause im Format 00:00 (HH:MM) eingeben.

Mit dem Skript will ich die Dauer, aus den Eingaben (von, bis und pause), errechnen lassen und in MySQL eintragen.

Mein Problem ist, dass die Pause mit dem Skript o. nicht korrekt eingetragen wird. Wenn die Pause unter einer Stunde eingetragen wurde, ist die Pause gleich 00:00 und über einer Stunde (z. B. 01:15) ergibt 00:15.

Damir
21.08.2003, 14:56:51
Hi,irgendwie weiss ich immer noch nicht, wofuer das gut ist aber vieleicht ist auch heute nicht mein Tag ;-))

Diese Verschiebung der Zeit (+-1Std) haengt sicherlich mit den Servereinstellungen zusammen (Greenwich - GMT + 01:00), die von den date-Funktionen genutzt werden.


Versuche mal die Pause so zu berechnen:

$pauseWert = explode(":", $pause); // Beispiel 0:16
$pause = ($pauseWert[0]*60+$pauseWert[1])*60;

Bye Damir