PHP MySQL考勤 - 如何限制时间(每天一次)

时间:2017-02-27 10:23:50

标签: javascript php html mysql

我有一个Textbox(用于员工ID)和一个Time In按钮,用于在单击时将Employee ID,当前日期和当前时间(不同列)保存到数据库。问题是如何将时间限制为每天一次。

这是我的代码:

<?php
    require "sampledb.php";

    date_default_timezone_set("Asia/Hong_Kong");

    $date = date('Y-m-d');
    $time = date('h:i:s');

    if(isset($_POST['in'])){
        $sql = "INSERT INTO timein(empid, date, time) VALUES(".$_POST['eid'].", '$date', '$time')";
        $conn->exec($sql);

        if($sql==true){
            echo '<script language="javascript">';
            echo 'alert("Time in Successful")';
            echo '</script>';
            echo '<meta http-equiv="refresh" content="0;url=sample.php" />';
            }else{
            echo "Time in Failed";
        }
    }
?>

<html>
    <head>
    </head>
    <body>
        <form method="POST" action="">
            <?php echo date("d/m/y : h:i:sa", time()) . "<br>"; ?>
            <input type="text" name="eid" placeholder="Employee ID">
            <input type="submit" name="in" value="Time in">
        </form>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

您可以在列(empid&amp; date)上添加 UNIQUE CONSTRAINT

首先在下面的查询中运行

ALTER TABLE `timein` ADD UNIQUE `unique_index`(`empid `, `date`);

empid和date的组合必须是唯一的。

答案 1 :(得分:-1)

在执行sql插入之前,请执行SELECT语句以查看在所需日期中该员工是否有一行。 如果num_rows为0,则继续执行INSERT。 如果num_rows不为0则显示错误警告消息。

在你的php中尝试以下内容。

if(isset($_POST['in'])){
        $eid = $_POST['eid'];
        $sql = "SELECT empid FROM timein WHERE empid='$eid' AND date='$date'";
        $con->exec($sql);
        $count = $con->rowCount();
        if($count == 0){
           $sql = "INSERT INTO timein(empid, date, time) VALUES(".$_POST['eid'].", '$date', '$time')";
           $conn->exec($sql);
 echo '<script language="javascript">';
            echo 'alert("Time in Successful")';
            echo '</script>';
            echo '<meta http-equiv="refresh" content="0;url=sample.php" />';
        } else {
            echo "Time in Failed";
        }

    }