时间和出勤,商店记录

时间:2015-02-10 09:07:15

标签: php mysql

我正在为员工建立一个时间注册系统。 我已经开始在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>

3 个答案:

答案 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>";
    }