Я хочу отмечать посещаемость студента один раз в день в моей базе данных

Я хочу сканировать RFID-карты от Arduino, и он должен отмечать посещаемость один раз в день, а не всякий раз, когда сканирует карту.

Это код 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 для посещаемости с повторяющейся маркировкой

| 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 |

Как сделать это один раз в день? Благодарю.

0

Решение

Просто добавьте уникальное ограничение в таблицу посещаемости rfid_uid и даты.

ALTER TABLE tbl_attendance ADD CONSTRAINT UK_ATTENTANCE UNIQUE(rfid_uid, `date`);

Таким образом, в базу данных будет вставлен только первый успешный удар за день с карты.

0

Другие решения

Если ваш первичный ключ (att_id, date), то вы не могли вставить данного пользователя с указанной датой более одного раза. Код вашего приложения будет обрабатывать случай, когда пользователь пытается зарегистрироваться более одного раза в день, отображая сообщение об ошибке

0

По вопросам рекламы [email protected]