2013-04-09 82 views
0

我搜索了高和低,並已找到很多答案,但沒有任何切割和幹我的情況。 我正在爲一個簡單的時間表(PHP/MYSQL)只爲幾個員工。只有幾個字段輸入「位置」「描述」「時間」「超時」。我需要做的是花時間和超時,並找出多少小時。爲了顯示的目的,我使用timein/timeout的下拉列表,這些值是從strtotime()函數每半個小時遞增一次創建的。PHP/MYSQL時間表計算從進出的小時

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>'; 

,當我嘗試插入那些到我的數據庫我得到一個不正確的時間值誤差(我應該有timein爲VARCHAR?)儘管如此我只是需要一種方法來採取timein(上午9:00),超時( 2pm),並從中獲得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)
  • 日期日期
  • 位置文本
  • timein時間
  • 超時時間
  • timespent INT(10)
  • totalhours INT(10)
+0

根據您創建列的方式,我不認爲時間戳的格式是正確的。你能向我們展示查詢和表格結構嗎? – 2013-04-09 16:15:22

+0

也缺少值=「」 – 2013-04-09 16:15:53

回答

0

您缺少</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> 
0

您的日期列期待像'0000-00-00'但MySQL的函數now()返回時間戳像'0000-00-00 00:00:00'嘗試CURDATE()代替。

另外你的日期格式不正確的是MySQL對Time的期望。 '00:00:00' 您應該在爲每個選項創建值時嘗試date("H:i:s", $i)。您仍然可以使用文本部分的日期格式。 (用戶會看到的文字。)

+0

謝謝。我發現無論使用NOW()還是CURDATE(),dbase都顯示4/9/2013 12:00:00 AM。時間的事情確實有幫助,現在我的dbase顯示15:00:00而不是下午3:00,仍然需要弄清楚如何計算工作時間。 – 2013-04-09 21:29:09

+0

只需減去。 $超時 - $ timein = timeworked(以秒爲單位)只需使用日期功能對其進行格式化即可按照您所需的格式顯示它。 – jmm 2013-04-09 22:24:21