我正在为员工建立一个时间注册系统。
我已经开始在mysql
中将时间保存为“日期时间”。
问题是,当我有两列datetime时,注册时间只会填充一列,第二列(取决于登录或退出)设置为“0000-00-00 00:00:00”。现在,当我想用时间记录回显一个表时,我也回应了“空”字段。我尝试使用if语句,但后来我的表格不能正常工作,我不能只在“选择”中使用“顺序”。有没有更好的方法,存储时间记录,或者我应该用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 :(得分:0)
我总是建议将时间存储为INT(11)。只需在php中存储从time()获得的unix时间戳。
这将允许您使用php日期函数轻松地格式化它:)
答案 1 :(得分: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的行数与其他cols的行数不一样
答案 2 :(得分: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>";
}