识别&在一列中超时

时间:2018-02-10 03:40:30

标签: php

我有一个图书馆系统的时间和&出去给学生们。学生可以在他们想要的时候进去,并在他们想要的时候外出。这是它的工作原理:每个学生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”。

2 个答案:

答案 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);
}
?>