【问题标题】:recording of timein and timeout in php在php中记录时间和超时
【发布时间】:2013-02-22 12:06:04
【问题描述】:

我正在尝试进行出勤监控,只要将其记录到数据库中,一个人就可以按他/她的意愿计时和超时。

id   idnumber    datein      timein     dateout     timeout

1     123      2013-02-21   08:00:01   2013-02-21   11:12:45

2     456      2013-02-21   10:15:01   2013-02-21   05:30:01

3     123      2013-02-21   06:58:52   2013-02-21   03:20:16

4     123      2013-02-21   10:05:35   2013-02-21 

谁能给我一个 php 中的插入/更新代码?

我有这段代码,如果不存在则可以插入 idnumber,如果存在则更新。

$query = "SELECT * FROM tblattendance WHERE idnumber='".$_POST[idnumber']."'";
$res = mysql_query($query);
list($exist) = mysql_fetch_array($res);

    if (!$exist){
          $query = "INSERT INTO tblattendance SET idnumber='".$_POST['idnumber']."', datein=CURDATE(), timein = CURTIME()";
          $insert_result = mysql_query($query);
    }else{
         $query1 = "UPDATE tblattendance SET dateout=CURDATE(), timeout = CURTIME() WHERE idnumber='".$_POST['idnumber']."' ORDER BY id DESC LIMIT 1 ";
         $insert_result1 = mysql_query($query1);    
    }

我想要的是我可以插入相同的 idnumber 而不更新旧记录。有可能吗?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    创建复合 ID 键。这是对两列的唯一约束 - idnumber + type 其中 type 是例如0 = 输入,1 = 输出。

    CREATE TABLE foo (
       id INT PRIMARY KEY,
       idnumber INT,
       type TINYINT(1),
       UNIQUE KEY idtype (id, type)
    );
    

    【讨论】:

    • 其实idnumber是tblattendance中的外键
    • 如果它是一个外键并且您需要为一个 idnumber 提供 2 条记录,那么您必须在它们之间添加另一个表(idnumber as PK),idnumber 将是来自 @ 的 FK 987654324@这个新表的PK。
    • 至少如果您想保留规范化的架构和 FK。
    • 感谢您分享您的想法。我终于明白了:)
    • 在 Stack Overflow 上,感谢您点击绿色的“接受”检查 ;-)
    猜你喜欢
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2023-03-29
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多