如果员工ID在该日期不存在,我试图在特定日期找到出勤表中的员工,因此应将其标记为(&#39;缺席&#39;)< / p>
请帮我解决。
$dateof = date('Y-m-d', strtotime($_POST['attdateof']));
$allemp = mysql_query("SELECT empid FROM `attendance` WHERE todaydate = '2016-03-17'");
if(mysql_num_rows($allemp) > 0)
{
$emp_from_detail = mysql_query("SELECT id FROM `empdetail`");
(int)$empdetailid = array();
while($emp = mysql_fetch_array($emp_from_detail))
{
$empdetailid[] = $emp[0];
}
(int)$id_in_att = array();
while($e = mysql_fetch_array($allemp))
{
$id_in_att = $e[0];
}
for($i = 0; $i <= mysql_num_rows($emp_from_detail); $i++)
{
if($empdetailid[$i] != $id_in_att[$i])
{
$markappcent = mysql_query("INSERT INTO `attendance`(`id`,`empid`, `empstatus`, `todaydate`) VALUES ('','".$empdetailid[$i]."','Absent','".$_POST['attdateof']."')");
if($markappcent)
{echo"<script>alert('Marked Successfully. ".$empdetailid[$i]."');</script>";}
else
{echo"<script>alert('Try Again ".$empdetailid[$i]."');</script>";}
}
}
}
else
{echo"<script>alert('Data not found');</script>";}
答案 0 :(得分:1)
嗯,这可以通过一个查询来解决。像这样的东西:
INSERT INTO attendance
SELECT NULL as id, empdetail.id as empid, 'Absent' as empstatus, '2016-03-17' as empdate
FROM empdetail WHERE id NOT IN (
SELECT empid
FROM attendance
WHERE todaydate = '2016-03-17'
)
查询说明: 首先从出勤表中选择所有,日期是今天。 然后从empdetail表中选择它,其中员工的id不在先前选定的人员集合中(在那里),并且该选择的结果被插入到考勤表中。
它也可以通过连接而不是子查询来完成,但它认为这更清楚(只是我的意见)。
如评论中所述:注意sql注入。
希望查询有帮助..
答案 1 :(得分:0)
您好我通过此查询解决了我的问题
Select * from `empdetail` e left join `attendance` a on e.id = a.empid and a.todaydate = '2016-04-21' where empstatus is null
答案 2 :(得分:0)
its not exact ans but you have to do something like this
have to loop the whole emp id and check in_array to attendance table id exists or not .if exists means just echo its else mark him as absent
hope it help you in_array function
for($i = 0; $i <= mysql_num_rows($emp_from_detail); $i++)
{
if(in_array($empdetailid[$i],$id_in_att)
{
echo "id exists ".;
}
else
{
$markappcent = mysql_query("INSERT INTO `attendance`(`id`,`empid`, `empstatus`, `todaydate`) VALUES ('','".$empdetailid[$i]."','Absent','".$_POST['attdateof']."')");
if($markappcent)
{echo"<script>alert('Marked Successfully. ".$empdetailid[$i]."');</script>";}
else
{echo"<script>alert('Try Again ".$empdetailid[$i]."');</script>";}
}
}