내가 작업하고있는 프로그램에서 사용자가 각 작업에 소비하는 시간을 보여주는 테이블이 있습니다. Time On Task
란의 총계를 표시하고 싶습니다.Mysql SUM() 대 PHP 정상 덧셈 산술
tfoot
은 while 문 외부에 있으므로 다른 쿼리를 사용하여 총계를 계산합니다. 이 Pen은 현재의 모양을 나타냅니다.
위에서 볼 수 있듯이 $grandtotal
은 모두 $tasktime
의 합계와 같지 않습니다. 이 작품을 어떻게 만들 수 있습니까?
그랜드 총 쿼리
$stots ="SELECT *, SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(te.date_end, te.date_start))))
AS Duration FROM taskentries";
$resultots=mysqli_query($db,$stots);
$totaltime =mysqli_fetch_assoc($resultots);
$grandtotal = $totaltime['Duration'];
표 PHP에서
<table>
<thead>
<th>Task</th>
<th>Date Start</th>
<th>Date End</th>
<th>Time On Task</th>
</thead>
<tfoot>
<tr>
<td th='Task'></td>
<td th='Date Start'></td>
<td th='Date End'>Grand Total</td>
<td th=''>
<?php
if($grandtotal < 0){
echo '0';
}else{
echo $grandtotal;
}?>
</td>
</tr>
</tfoot>
<tbody>
<?php
$sql="SELECT * FROM taskentries";
$result=mysqli_query($db,$sql);
while($taskentry=mysqli_fetch_array($result)){ ?>
<tr>
<td th='Task'><?=$taskentry['task'];?></td>
<td th='Date Start'><?=$taskentry['date_start'];?></td>
<td th='Date End'><?=$taskentry['date_end'];?></td>
<td th='Time On Task'>
<?php
$date_start = date("h:i:sa",strtotime($taskentry['date_start']));
$date_end = date("h:i:sa",strtotime($taskentry['date_end']));
$tasktime = $date_end - $date_start;
if($tasktime < 0){
echo '0';
}else{
echo $tasktime;
}?>
</td>
</tr>
<?php };?>
</tbody>
</table>
'$ total + = $ date_end - $ date_start;'통지를'+'제거하면 정의되지 않은 변수'$ total'이 표시됩니다. 그리고 코드의 결과는 정수입니다. 첫 번째 행은 이제 7200이고 두 번째 행은 6406입니다. – Clark
루프 이전에 변수를 '0'으로 초기화해야합니다. – Barmar
아마도 'DateInterval' 클래스를 사용해야합니다. – Barmar