2015-02-10 62 views
0

我正在爲員工建立一個時間登記系統。 我已經開始在mysql節省時間「日期時間」。 問題是,當我有兩列與日期時間註冊時間將只填寫一列,第二個(取決於登錄或退出)設置爲「0000-00-00 00:00:00」。現在當我喜歡用時間記錄回顯表格時,我也會回顯「空白」字段。我試圖使用if語句,但是我的表格並沒有很好地工作,我不能只在「Select」中使用「Order」。有沒有更好的方法,存儲時間記錄,或者我應該使用PHP腳本進行一些過濾?時間和附件,店鋪記錄

PHP

<table> 
    <?php 
    //Loop out the result 
    while ($row = $stmt->fetch()) { 
     echo "<tr>";  
     echo "<td>" .$row['usr_stamp_in']."</td>";    
      echo "<td>" .$row['usr_stamp_out']."</td>";  
    echo "</tr>"; 
    } 
    ?> 
</table> 
+0

而是具有如果條款內的​​標籤,你可以把它們放在外面,只有使用IF文的值來顯示,這樣,你的表應正確顯示 – Epodax 2015-02-10 09:10:53

+0

謝謝。現在桌子看起來不錯,但我有一個新問題。我得到了白色的領域..我想我需要用php腳本解析時間。 – d00rman 2015-02-10 09:20:59

回答

0

要使表格正確顯示,您需要在任何一種情況下輸出。所以用你的if來設置一個輸出字符串,例如可能是空的。

while ($row = $stmt->fetch()) { 
    echo "<tr>"; 
    if($row['usr_stamp_in'] == "0000-00-00 00:00:00") { 
    $usr_stamp_in_display = ''; 
    } else { 
    $usr_stamp_in_display = $row['usr_stamp_in']; 
    } 
    if($row['usr_stamp_out'] == "0000-00-00 00:00:00") { 
    $usr_stamp_out_display = ''; 
    } else { 
    $usr_stamp_out_display = $row['usr_stamp_out']; 
    } 

    echo "<td>$usr_stamp_in_display</td>"; 
    echo "<td>$usr_stamp_out_display</td>"; 
    echo "</tr>"; 
} 

或更短:

while ($row = $stmt->fetch()) { 
     echo "<tr>"; 
     $usr_stamp_in_display = ($row['usr_stamp_in'] == "0000-00-00 00:00:00") ? '' : $row['usr_stamp_in']; 
     $usr_stamp_out_display = ($row['usr_stamp_out'] == "0000-00-00 00:00:00") ? '' : $row['usr_stamp_out']; 

     echo "<td>$usr_stamp_in_display</td>"; 
     echo "<td>$usr_stamp_out_display</td>"; 
     echo "</tr>"; 
    } 
+0

謝謝。非常好的代碼!它修復了表問題,但給了我新的; D我需要編寫一個更復雜的腳本,因爲現在我在一行上得到一個來自stamp_in的日期,而stamp_out在第二行上首先出現。 – d00rman 2015-02-10 09:26:52

0

我總是建議儲存時間INT(11)。只需將您從time()獲得的unix時間戳存儲在php中即可。

這將使你真的很容易使用PHP的日期功能:)

+0

我想maby這一定是我的選擇。爲了使表格看起來可讀並計算工作時間,我需要解析time_in和time_out。我需要編寫一個更復雜的系統。 – d00rman 2015-02-10 09:23:01

0
while ($row = $stmt->fetch()) { 
    echo "<tr>" . 
     "<td>"; 
    if ($row['usr_stamp_in'] != "0000-00-00 00:00:00") { 
    echo $row['usr_stamp_in']; 
    } 
    echo "</td>" . 
     "<td>"; 
    if ($row['usr_stamp_out'] != "0000-00-00 00:00:00") { 
     echo $row['usr_stamp_out']; 
    } 
    echo "</td>"; 
} 
echo "</tr>"; 
} 
?> 
</table> 

這樣你避免你的表中查找奇怪對其進行格式化,由於不具有行相同數量的一些的cols爲他人

+0

謝謝。這修復了表格。但我得到一個新問題。時間表不匹配天..我需要編寫一個更復雜的PHP腳本。 – d00rman 2015-02-10 09:21:52