我想在我的数据库中每天标记一次学生的出勤
I want to mark attendance of a student once per day in my database
我想从 Arduino 扫描 RFID 卡,它应该每天标记出勤一次,而不是每次扫描卡时。
这是 PHP 标记出勤的代码:
public function getRFIDAttendanceApi(){
$rfid_uid = trim($_REQUEST['uid']);
$sql = "select count(*)as tot from tbl_users where rfid_uid='$rfid_uid'";
$data = $this->getData($sql);
if(count($data)>0 && $data[0]['tot']>0){
$sql = "insert into tbl_attendance set rfid_uid='$rfid_uid'";
$flag = $this->conn->query($sql);
if($flag){
echo "Attendance marked successfully!";
die;
} else {
echo "Sorry! Something unexpected happened!";
die;
}
} else {
echo "invalid access";die;
}
这是mysql中的table,用于重复打分
| att_id | rfid_uid | punch_timestamp | date | time |
+--------+----------+---------------------+------------+----------+
| 1 | 85988145 | 2018-04-21 10:48:51 | 2018-04-21 | 10:48:51 |
| 2 | 85988145 | 2018-04-21 10:48:52 | 2018-04-21 | 10:48:52 |
如何做到一天一次?谢谢
如果您的主键 (att_id, date) 那么您不能多次插入具有给定日期的给定用户。然后,您的应用程序代码将处理用户尝试每天注册多次的情况,并显示一条错误消息
只需为 rfid_uid 和日期的出勤 table 添加一个唯一的约束。
ALTER TABLE tbl_attendance ADD CONSTRAINT UK_ATTENTANCE UNIQUE(rfid_uid, `date`);
这样,一天中第一次成功打卡的卡将被插入数据库。
我想从 Arduino 扫描 RFID 卡,它应该每天标记出勤一次,而不是每次扫描卡时。
这是 PHP 标记出勤的代码:
public function getRFIDAttendanceApi(){
$rfid_uid = trim($_REQUEST['uid']);
$sql = "select count(*)as tot from tbl_users where rfid_uid='$rfid_uid'";
$data = $this->getData($sql);
if(count($data)>0 && $data[0]['tot']>0){
$sql = "insert into tbl_attendance set rfid_uid='$rfid_uid'";
$flag = $this->conn->query($sql);
if($flag){
echo "Attendance marked successfully!";
die;
} else {
echo "Sorry! Something unexpected happened!";
die;
}
} else {
echo "invalid access";die;
}
这是mysql中的table,用于重复打分
| att_id | rfid_uid | punch_timestamp | date | time |
+--------+----------+---------------------+------------+----------+
| 1 | 85988145 | 2018-04-21 10:48:51 | 2018-04-21 | 10:48:51 |
| 2 | 85988145 | 2018-04-21 10:48:52 | 2018-04-21 | 10:48:52 |
如何做到一天一次?谢谢
如果您的主键 (att_id, date) 那么您不能多次插入具有给定日期的给定用户。然后,您的应用程序代码将处理用户尝试每天注册多次的情况,并显示一条错误消息
只需为 rfid_uid 和日期的出勤 table 添加一个唯一的约束。
ALTER TABLE tbl_attendance ADD CONSTRAINT UK_ATTENTANCE UNIQUE(rfid_uid, `date`);
这样,一天中第一次成功打卡的卡将被插入数据库。