我有一个图书馆系统的时间和&出去给学生们。学生可以在他们想要的时候进去,并在他们想要的时候外出。这是它的工作原理:每个学生ID都有一个条形码。他们每次通过门时都需要悬停在扫描仪下方,这会自动保存数据。 这是我的保存代码。
<?php
$scan=$_GET["scan"];
include("connection/mysqlconnect.php");
$sql="SELECT * FROM student where Barcode like('$scan%')";
$result = $conn->query($sql);
$count=mysqli_num_rows($result);
if($count==1)
{
while($row = mysqli_fetch_array($result)) {
$id = $row['ID'];
$crs_id = $row['course_id'];
}
$my_date = date("Y-m-d h:i:s", strtotime("+7 hours"));
$sql="insert into dtr
(students_id,course_id,Date_Time)values('$id','$crs_id','$my_date')";
$result = $conn->query($sql) or die(mysqli_error());
mysqli_close($conn);
}
?>
以上代码完美无缺。
但是,我想确定它是在一列还是在一列中。
以下是我的示例表。我想添加In-Out Column。
Student_ID Course_ID Date_Time In-Out
11 4 2018-02-09 08:31:05 in
22 5 2018-02-09 09:35:09 in
22 5 2018-02-09 09:45:08 out
11 4 2018-02-09 10:01:05 out
22 5 2018-02-09 11:35:09 in
我的问题是:我想确定最后一个悬停是否在“In”中,在“In-Out”列中,系统将保存“out”。
答案 0 :(得分:0)
简单的方法是从dtr表中为该学生/课程组合选择记录,然后只获取最后一个...
$sql="SELECT `In-out` as lastAccess FROM `dtr` where Student_ID = $id
order by Date_Time desc limit 1";
$result2 = $conn->query($sql);
$count2=mysqli_num_rows($result2);
$lastAccess = 'out';
if( $count2 == 1 ) {
$row = mysqli_fetch_assoc($result2);
$lastAccess = $row['lastAccess'];
}
$lastAccess = ( $lastAccess == 'out' )? 'in':'out';
这将在第一个SQL之后检查学生和插入之前。然后插入可以使用$ lastAccess。
请注意,如果找不到此表格中的某行,则$ lastAccess的值为&#39; out&#39; (在测试之前设置,因此反转它的位将设置一个新的值,因为它是该学生第一次使用该系统。
答案 1 :(得分:0)
@Nigel
<?php
$scan=$_GET["scan"];
include("connection/mysqlconnect.php");
$sql="SELECT * FROM student where Barcode like('$scan%')";
$result = $conn->query($sql);
$count=mysqli_num_rows($result);
if($count==1)
{
while($row = mysqli_fetch_array($result)) {
$id = $row['ID'];
$crs_id = $row['course_id'];
}
$my_date = date("Y-m-d h:i:s", strtotime("+7 hours"));
$sql="SELECT `in-out` as lastAccess
FROM `dtr`
where student_id = $id
order by Date_Time desc
limit 1";
$result2 = $conn->query($sql);
$count2=mysqli_num_rows($result2);
$lastAccess = 'out';
if( $count2 == 1 ) {
$row = mysqli_fetch_assoc($result2);
$lastAccess = $row['lastAccess'];
// Check
echo "in-out=".$lastAccess.PHP_EOL;
}
$lastAccess = ( $lastAccess == 'out' )? 'in':'out';
// Check
echo "next in-out=".$lastAccess.PHP_EOL;
$sql="insert into dtr (students_id,course_id,Date_Time,in-out)values('$id','$crs_id','$my_date','$lastAccess')";
$result = $conn->query($sql) or die(mysqli_error($conn));
mysqli_close($conn);
}
?>