如何检查员工ID在考勤表中是否存在?

时间:2016-04-22 13:47:31

标签: php mysql

如果员工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>";}

3 个答案:

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

                }

        }