Hallo Zusammen
In einer wochenübersicht würde ich gerne Arbeitszeiten darstellen.
Normalerweise hat der Benutzer vier einträge (morgens gekommen, über den Mittag gegangen und wieder gekommen und abends wieder gegangen), aber es kann auch vorkommen dass sich der Benutzer öfters einträgt, z.B. Zahnarzttermin oder Therapie usw.
Der Benutzer ist frei wenn er kommen und gehen möchte, darum möchte ich individuel das Tagestotal berechnen können, ich wollte es wie folgt lösen, doch die berechnung gibt ein falsches Tagestotal aus!
(z.B. gekommen 07:42:16 gegangen 09:19:36, gekommen 09:27:29 gegangen 09:27:41 BERECHNUNG Tagestotal 15:10:16???)
Ich rechne bereits in Sekunden, hier der code!
#Tageszaehler
for($daycount=0;$daycount<=6;$daycount++)
{
$wochentag = show_wochentag($daycount);
#Liest alle Batcheinträge des angegebenen Tages ein (von der betroffenen Person)
$select = "select date_format(date_add('$wochenstart_datum', interval $daycount day),'%Y-%m-%d') as datum";
my($tmp) = $dbh->prepare($select);
$tmp->execute();
$hash_tmp = $tmp->fetchrow_hashref;
$tages_dat = $hash_tmp->{datum};
#Tagesname wird aus Unterfunktion gerufen und ausgegeben
$tagesname = show_tagname($daycount);
print "</tr>";
print "<td>$tag_name</td>";
#Batcheinträge anzeigen
my($sth) = $dbh->prepare("select * from batch where pers_id = $personen_id and batch_datum = '$tages_dat' order by batch_zeit");
$sth->execute();
$maxrow = 0;
while($hash_eintraege = $sth->fetchrow_hashref)
{
print "<td>$hash_eintraege->{batch_zeit}</td>";
$maxrow++;
if($maxrow%2 != 0)
{
($h,$m,$s) = split(/:/,$hash_eintraege->{batch_zeit});
$ein =0;
$ein = $h*3600+$m*60+$s;
}
else
{
($h,$m,$s) = split(/:/,$hash_eintraege->{batch_zeit});
$aus = 0;
$aus = $h*3600+$m*60+$s;
$diff = $diff+$aus-$ein;
}
$tag_total = $tag_total+$diff;
}
#Tagestotal berechnen und ausgeben
$stunde = "".int($tag_total/3600)."";
$minute = "".int(($tag_total-($stunde*3600))/60)."";
$sekunde = "".int(($tag_total-($stunde*3600)-($minute*60)))."";
$wochentotal += $tag_total;
$tag_total = 0;
zeitformat();
$zeit = "$stunde:$minute:$sekunde";
$stunde = 0;
$minute = 0;
$sekunde = 0;
print "<td bgcolor = #99CCFF><li>$zeit</td>";
print "</tr>";
$zeit =0;
}
Grüsse juha