Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中构建RFID登录系统_Mysql - Fatal编程技术网

在MySQL中构建RFID登录系统

在MySQL中构建RFID登录系统,mysql,Mysql,我正在尝试使用RFID建立一个自动出勤网站,目前MySQL已经记录了学生进入校园的时间和日期,但我希望每个出勤都使用他们进入校园的时间标记为“迟到”或“准时” 例如,学生A在早上7:11在门口点击他的RFID,这将被标记为迟到,学生B在早上6:55在门口点击她的RFID,这将被标记为早在MySQL 我是JavaScript、MySQL和jQuery的初学者,所以我不知道该使用哪种代码。我自学成才,所以我尝试在网上搜索教程,但对于这本书,我似乎找不到它的教程 这是我的RFID标签代码 <?p

我正在尝试使用RFID建立一个自动出勤网站,目前MySQL已经记录了学生进入校园的时间和日期,但我希望每个出勤都使用他们进入校园的时间标记为“迟到”或“准时”

例如,学生A在早上7:11在门口点击他的RFID,这将被标记为迟到,学生B在早上6:55在门口点击她的RFID,这将被标记为早在MySQL

我是JavaScript、MySQL和jQuery的初学者,所以我不知道该使用哪种代码。我自学成才,所以我尝试在网上搜索教程,但对于这本书,我似乎找不到它的教程

这是我的RFID标签代码

<?php
require_once 'admin/connect.php';
$student = $_POST['student'];
$time = date("H:i", strtotime("+8 HOURS"));
$date = date("Y-m-d", strtotime("+8 HOURS"));
$q_student = $conn->query("SELECT * FROM `student` WHERE `student_no` = '$student'") or die(mysqli_error());
$f_student = $q_student->fetch_array();
$student_name = $f_student['firstname']." ".$f_student['lastname'];
$conn->query("INSERT INTO `time` VALUES('', '$student', '$student_name', '$time', '$date')") or die(mysqli_error());
echo "<h3 class = 'text-muted'>".$student_name." <label class = 'text-info'>at  ".date("h:i a", strtotime($time))."</label></h3>";
(请避免使用图像显示问题的关键部分)

您的
time
表似乎包含以下列:

student
student_name
time
date
看起来你没有关于学生是到达还是离开的信息。这让你的逻辑变得有点复杂。假设
05:00
09:00
之间的
time
表中的任何一行表示到达,并且
07:00
之后的任何到达都被视为迟到。您可以通过此查询获取上周到达的学生的列表。他们将在需要时使用标签
迟到
,否则将使用标签
准时

  SELECT `date`, student, student_name, `time`,
         CASE WHEN time > '07:00' THEN 'LATE' ELSE 'ON TIME' END AS tag
    FROM `time`
   WHERE  `date` >= CURDATE() - INTERVAL 7 DAY
     AND `time` BETWEEN '05:00' AND '09:00'
    ORDER BY `date`, `student` 
我想这就是你所说的标记每次出席的意思

编辑如果您想在网站上显示这些标签
LATE
,则数据库中不需要额外的列。只需使用我展示的查询;查询本身包含定义延迟的规则并应用标记。然后显示查询的结果。通常,改变表以插入可以从每行的现有内容派生的条件不是一个好主意。(如果您有数亿行,并且必须使用表才能获得性能,那么情况就不同了。但您离这一点还差得很远。)


Pro-tip不要在表或列的名称中使用保留字,如
DATE
TIME
。这样做会使跟踪bug变得更加困难。

Hi,我是否需要在数据库中为此制作另一列,并将其放在php文件中,以便标记显示在网站上?我不太明白,我正试图把它添加到我的PHP代码中,这样当管理员检查学生的出勤情况时,它就会出现在网站上。再次,您好,对不起,您一定认为我真的很愚蠢,但我如何将它添加到我的MySQL或PHP文件的代码中?我真的很抱歉。到目前为止你都试了些什么?你被困在哪里?请注意,这段代码对SQL注入开放,这不是重复的吗?嗨!当前被此错误困扰。“正在尝试访问null类型值的数组偏移量”