我對此有一段時間了。我一直在尋找,我看到不同的東西,我可以使用像CAST,date() function,SUM,Javascript數學等問題是我不知道哪一個使用或哪一個我會用在我的情況。我越是閱讀不同的線索和「解決方案」,我就越困惑於如何將其應用於我的需求。我有一個簡單的時間表在我的數據庫中稱爲「時間表」在它我有列entry_id(AI),user_id,名字,姓氏,衝(日期時間)和評論(進出)。我已經在PHP中做了一個簡單的查詢來將用戶時間表引入下面的HTML表格中。 在while語句中計算時間表中的時間PHP/MYSQL
在我的PHP查詢中,我運行了一條WHILE語句來遍歷記錄。因爲我正在使用一個循環,所以我不知道如何計算給出該時間段的總工作時間的時間。
這裏是我的查詢:
$timesheet = mysqli_query($connect, "SELECT DATE_FORMAT(punch, '%Y/%m/%d') AS punch_date, DATE_FORMAT(punch, '%H:%i:%s') AS punch_time, comment
FROM timesheet WHERE user_id = '$employee' AND punch BETWEEN '$fromDate' AND '$toDate'") or die('Error: ' . mysqli_error($connect));
if(mysqli_num_rows($timesheet)>0){
$output = '<table class="table table-striped">
<thead>
<tr>
<th>Date</th>
<th>Time</th>
<th>Status</th>
</tr>
</thead>
<tbody>';
while ($row = mysqli_fetch_array($timesheet, MYSQL_ASSOC)) {
$date = $row['punch_date'];
$time = $row['punch_time'];
$status = $row['comment'];
$output .= '<tr>
<td>' . $date . '</td>
<td ';
if($status === 'In'){
$output .= 'class="in-time"';
} elseif($status === 'Out') {
$output .= 'class="out-time"';
}
$output .= '>' . $time . '</td>
<td>' . $status . '</td>
</tr>';
} //end while
$output .= '</tbody>
</table>';
echo $output;
} //end if mysqli_num_rows
它甚至可以計算在一個循環的時間?如果是的話,你會介意給出一個例子,而不是你能指出我在哪裏/我做什麼的方向是錯誤的?
UPDATE: 每次進入都有或進或出的狀態,所以我需要獲得各組進出的差異,然後添加在一起,得到的時間總數的工作爲時間段。歸根結底,這是我需要完成(見紅色總在表的底部)
的這裏是數據庫表「時間表」
哇,一爲creativetity,謝謝!我有一個快速的問題 - 當使用上面的圖像作爲參考,當我回聲$總數(仍然以秒爲單位)時,我得到202851秒,當它轉換成小時時,它會達到56.3475小時。所以在某處轉換是錯誤的。在圖像中,如果我手工計算數據,它大致會顯示總共15分鐘的工作時間,這將轉換爲0.25小時。那個問題在哪裏? – Derek 2014-09-30 13:10:24
你是對的!計算錯了。我認爲這會做到這一點。你的情況是56:16:51。 – tliokos 2014-09-30 13:23:06
非常感謝您的幫助,我發現您的代碼將添加總時間條目並將結果作爲總數。我已經更新了這個問題,希望能夠更清楚地解釋我的問題。希望這會對預期結果產生一些影響,迄今爲止,您一直非常有幫助。每個條目都有一個In或Out的狀態,我需要做的是找出每個In和Out條目之間的時間差異,然後我將這些條目加在一起以獲得在這個時間段內工作的總時間,以小時爲單位。 – Derek 2014-09-30 15:14:51