我有一个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>
答案 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";
}
}