PHP/MYSQL时间表计算小时从进出


PHP/MYSQL timesheet calculate hours from in and out

我到处寻找,找到了很多答案,但没有一个是针对我的情况的。我在一个非常简单的时间表(PHP/MYSQL)工作,只有几个员工。只有几个字段需要输入"Location"Description"Timein"Timeout"。我需要做的是计算时间和超时时间,找出需要多少小时。出于显示目的,我使用下拉列表来显示timein/timeout,这些值是由strtotime()函数创建的,每半小时递增一次。

echo '<select name="timein">';
$start=strtotime('7:00am');
$end=strtotime('8:00pm');
for ($i=$start;$i<=$end;$i+=1800)
{echo '<option value="'.date('g:i a',$i).'">'.date('g:i a',$i).'</option>';}
echo '</select>';

当我试图插入那些到我的数据库,我得到一个不正确的时间值错误(我应该把时间作为一个varchar吗?)然而,我只是需要一种方法来抽出时间(上午9点)超时(下午2点),从中得到5个小时。

mysql_query("INSERT INTO sheet(employee, date, location, description, timein, timeout)
VALUES('$employee', NOW(), '$location', '$description', '$timein', '$timeout')")or die(mysql_error());
  • 员工varchar(30)
  • <
  • 日期日期/gh><
  • 位置文本/gh>次世代都会面临着这样
  • 时刻
  • 超时时间
  • timespent int (10)
  • totalhours int (10)

您缺少</option>并且您的选项没有值,只有一个标签。

<select>应该是这样的:

<select name="timein">
    <option value="0">8:00am</option>
    <option value="1">9:00am</option>
    <option value="2">10:00am</option>
    <option value="3">11:00am</option>
    <!-- etc -->
</select>

您的日期列期望类似'0000-00-00'的东西,但mysql函数now()返回时间戳,如'0000-00-00 00:00:00'尝试CURDATE()代替。

你的日期格式也不正确mysql期望的时间。'00:00:00'在为每个选项创建值时,您应该尝试date("H:i:s", $i)。您仍然可以使用文本部分的日期格式。(用户将看到的文本)