2012-04-12 55 views
1

正如你可能会告诉我吮吸MySQL使用PHP!所以这里是我的问题:从mysql db中添加小时,然后通过PHP将它们添加到HTML表中

我有一个名为TimeRecords的MySQL表,包含以下列:ID,日期,StartTime,EndTime,Break和Location。

我有一个显示使用该SELECT

$result = mysql_query(" 
     SELECT * FROM TimeRecords 
     WHERE Date 
     BETWEEN '{$CurrentYear}-{$CurrentMonth}-1' 
     AND '{$CurrentYear}-{$CurrentMonth}-31' 
    "); 

该信息表,和本代码:

<table> 
    <tr> 
     <th>Location:</th> 
     <th>Date:</th> 
     <th>Start:</th> 
     <th>End:</th> 
     <th>Break?</th> 
     <th>Total Hours</th> 
    </tr> 

    <?php 
     while($row = mysql_fetch_array($result)) { 

      echo "<tr>"; 
       echo "<td>". $row['Location'] . "</td>"; 
       echo "<td>". $row['Date'] . "</td>"; 

       echo "<td>" . date("h:i A", ($row['StartTime'])) . "</td>"; 
       echo "<td>" . date("h:i A", ($row['EndTime'])) . "</td>"; 

       echo "<td>"; 

       if ($row['Break']==1){ 
        echo "Yes"; 
       } 
       else { 
        echo "No"; 
       } 
       echo "</td>"; 

      echo "</tr>"; 
     } 


?> 
</table> 

我如何将减去结束时间和开始时间的表创建另一个获得当天的总工作时间?

从我明白我可以抓住使用这个选择信息:

$TimeWorked = mysql_query(" 
     SELECT ((EndTime - StartTime)/60/60) AS TimeWorked 
     FROM TimeRecords 
     ") 

,但我不知道我应该做的事,以显示在循环中。任何帮助,将不胜感激!

+1

尝试'$ row ['TimeWorked']'? – 2012-04-12 08:21:40

+0

不知怎的,我需要调用第二个SELECT查询,但我不知道如何从第一个循环做到这一点。 – anthropaulogy 2012-04-12 08:33:23

+0

在你的第一个和唯一需要的查询中,在'*'之后插入',((EndTime - StartTime)/ 60/60)AS TimeWorked'。然后在循环内用'$ row ['TimeWorked']'获取该值。 – 2012-04-12 08:35:41

回答

1

尝试:

$result = mysql_query(" 
     SELECT a.*, ((a.EndTime - a.StartTime)/3600) AS TotalHours FROM TimeRecords a 
     WHERE Date 
     BETWEEN '{$CurrentYear}-{$CurrentMonth}-1' 
     AND '{$CurrentYear}-{$CurrentMonth}-31' 
    "); 

看看是否能为你工作。

+0

非常感谢!它像一个魅力。但。*和a.StartTime等中的“a”是什么意思? – anthropaulogy 2012-04-12 08:44:27

+0

语法引用TimeRecords表。通常只有在您从多个表中提取数据时才需要(这里不需要这么做),但对于我来说,添加它们是反射性的。 – Femi 2012-04-12 09:11:57

0
$starttime = $row['StartTime'] 
$endtime = $row['EndTime'] 
echo "<td>" . date("h:i A", ($starttime)) . "</td>"; 
echo "<td>" . date("h:i A", ($endtime)) . "</td>"; 
echo "<td>" . ($endtime - $starttime)/3600 . "</td>"; 

我不完全确定我知道你的意思,但会为你工作吗?

+0

我尝试了第一次,它的工作原理,但后来我会创建一个单元格,将总计所有的工作时间,这是完全无法完成的PHP工作。这就是为什么我需要mysql来完成这项工作。虽然谢谢! – anthropaulogy 2012-04-12 08:37:00

相关问题