Dysponuję takim oto kawałkiem kodu:
if (isset($_POST['pokaz-godziny']) && ($_POST['opcja'] != "wybierz pracownika")) {
require_once ('config.php');
$opcja = $_POST['opcja'];
$miesiac = date("m");
$rok = date("Y");
$zaps = mysql_query("SELECT * FROM `".$opcja."` WHERE (MONTH(`data_wejscia`) = ".$miesiac." AND YEAR(`data_wejscia`) = ".$rok.") OR (MONTH(`data_wyjscia`) = ".$miesiac." AND YEAR(`data_wyjscia`) = ".$rok.")");
if ($zaps) {
echo '<br/><br/><strong>';
echo '<table width="100%">';
echo '<tr><td class="list">ID</td> <td colspan="2" class="list">Wejście</td> <td colspan="2" class="list">Wyjście</td><td class="list">Czas Pracy</td> <td class="list">Bunty</td></tr>';
$sumdiff=new DateTime('0:0');$st=new DateTime('0:0');
while ($wiersz = mysql_fetch_array($zaps)) {
echo '<tr>';
echo '<td class="list">';
echo ++$j . ". ";
echo '</td>';
echo '<td class="list">';
echo $wiersz[1];
echo '</td>';
echo '<td class="list"> ';
echo $wiersz[2];
echo '</td>';
echo '<td class="list">';
echo $wiersz[3];
echo '</td>';
echo '<td class="list">';
echo $wiersz[4];
echo '</td>';
echo '<td class="list">';
#zapis wartości pobranych z bazy do zmiennej.
$din = $wiersz[1];
$dout = $wiersz[3];
$in = $wiersz[2];
$out = $wiersz[4];
#zapisanie wartości 2 komórek (daty i czasu) jako 1 ciąg znaków oddzielony spacją
$dtst_str = $din." ".$in;
$dtnd_str = $dout." ".$out;
#funkcja przeliczania czasu pracy:
$dteStart = new DateTime($dtst_str);
$dteEnd = new DateTime($dtnd_str);
$dteDiff = $dteStart -> diff($dteEnd);
$sumdiff->add($dteDiff);
if ($out == "00:00:00") {
echo "08:00";
} else {
echo $dteDiff->format('%H:%I');
}
echo '</td>';
echo '<td class="list">';
echo $wiersz[5];
echo '</td>';
echo '</tr>';
}
echo '<tr><td class="list">---</td><td class="list">---</td><td class="list">---</td><td class="list">---</td><td class="list">Suma:</td><td class="list">';
$diff=$sumdiff->diff($st);
echo ($diff->days*24)+$diff->h .'h';
$godziny_wypl = ($diff->days*24)+$diff->h;
echo '</td>';
echo '<td class="list">';
$suma = mysql_query("SELECT SUM(`bunty`) FROM `".$opcja."` WHERE (MONTH(`data_wejscia`) = ".$miesiac." AND YEAR(`data_wejscia`) = ".$rok.")");
$poka = mysql_result ($suma, $row);
echo $poka;
echo '</td>';
echo '</tr>';
echo '<tr>';
echo '<td class="list">---</td>';
echo '<td class="list">---</td>';
echo '<td class="list">---</td>';
echo '<td class="list" colspan="2">Do zapłaty:</td>';
echo '<td class="list" colspan="2">'.(($poka * 12)+($godziny_wypl * 24)).'</td>';
echo '</tr>';
echo '</table>';
echo '</br></br>';
}
}
--EDIT: --
SS: <img src="http://screenshot.sh/n9IKacfkfofrO"/>
Kod sam w sobie bez udziwnień działa ok, ale ...
chcę rozpatrzeć sytuacje w której w bazie w polu czas_wyjscia
(w w.w. kodzie wartość $wiersz[4], czy jak ktoś woli $out - bo to jest w zasadzie 1 i to samo tylko inaczej zapisane na potrzeby skryptu :P ) nie została uzupełniona czyli jej wartość wynosi 0000, teraz jeżeli wartość danej komórki wynosi 0 to chciałbym aby suma czasu pracy wynosiła 8h po czym wartość została dodana prawidłowo do pozostałych wartości sumie kolumny. czy jest to w ogóle możliwe ? Poniżej zamieszczam screen wyniku który otrzymuję.
w momencie kiedy wyliczę z użytej funkcji różnicę czasu bez wykorzystania pola daty, wyświetla mi sumę godzin prawie dobrze tylko że zamiast dodać 8h do wyświetlonego czasu który wynosi 6h po zsumowaniu 3 pierwszych wierszy wynik wyświetlony to 8h ... a do tego wystąpi problem jeżeli będzie różnica dat - chyba że się mylę, to proszę mnie poprawić bo nie weryfikowałem tego jeszcze.