$sql="SELECT _staffinfo.id,cardlogtime.logtime FROM _staffinfo , cardlogtime where _staffinfo.staffid='".$sessionstaffid."' and cardlogtime.userid='".$sessionstaffid."' and _staffinfo.state!=1 and cardlogtime.logtime like '%".$txtyear."-".$txtmonth."-%'";
//联表查询,条件是工卡号,这里查出这个人的工号和打卡时间
$rs=mysql_query($sql);
while($row=mysql_fetch_array($rs)){
$logtime=explode(" ",$row['logtime']);
//拆分时间 $logtime[0]是日期 $logtime[1]是时间
$sid=$row['id'];
$sql1="select * from _classassign where state!=1 and sid=".$sid;//查詢班次id,條件是工卡號
$rs1=mysql_query($sql1);
while($row1=mysql_fetch_array($rs1))
{
//月 年
$search="select * from attandance_".$txtmonth."_".$txtyear." where sid=".$row['id']." and DATE='".$logtime[0]."'";//查要插入的表,条件是id和日期
$rssearch=mysql_query($search); $num=mysql_num_rows($rssearch);
$sql2="select * from _workhourclass where state!=1 and id=".$row1['cid'];//根據班次id查出班次的排班時間
$rs2=mysql_query($sql2);
$row2=mysql_fetch_array($rs2);
$sqljiaban="select * from _departmentovertimeinfo where state!=1 and sid=".$row['id'];
$rsjiaban=mysql_query($sqljiaban);//根據sid查出此sid申請加班的時間
$rowjia=mysql_fetch_array($rsjiaban);
//注意这里,这样判断跨天时间有问题,但是班次又有多个,又不知拿哪个班次时间去比较 if($num==0){ //如果查出符合条件的记录为空就添加到表 if($logtime[1]>="00:00"&&$logtime[1]<"06:05")//判斷第一个時間是不是跨天的
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','".$logtime[1]."','0','0','0','0','0','0')";
} //判斷時間是不是屬于班次的第一個上班時間
else if($logtime[1]>=datetime($row2['wkphase1intime'])&&$logtime[1]<datetime3($row2['wkphase1outtime']))
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','".$logtime[1]."','0','0','0','0','0')";
}
//判斷時間是不是屬于班次的第二個下班時間
else if($logtime[1]>=datetime3($row2['wkphase1outtime'])&&$logtime[1]<datetime($row2['wkphase2intime']))
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','".$logtime[1]."','0','0','0','0')";
//判斷時間是不是屬于班次的第三個上班時間
}else if($logtime[1]>=datetime($row2['wkphase2intime'])&&$logtime[1]<datetime3($row2['wkphase2outtime']))
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','".$logtime[1]."','0','0','0')";
//判斷時間是不是屬于班次的第四個下班時間
}else if($logtime[1]>=datetime3($row2['wkphase2outtime'])&&$logtime[1]<datetime4($row2['wkphase2outtime']))
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','".$logtime[1]."','0','0')";
//判斷時間是不是屬于班次的第五個上班時間
}else if($logtime[1]>=datetime($rowjia['starttime'])&&$logtime[1]<datetime2($rowjia['starttime']))
{
if($rowjia['starttime']=="")//如果加班的上班时间为空,插入0
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','0','0','0')";
}else
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','0','".$logtime[1]."','0')";
}
//判斷時間是不是屬于班次的第六個下班時間, 这个时间就是凌晨00:00以前到加班的上班时间之间
}else if($logtime[1]<="23:59"&&$logtime[1]>=datetime2($rowjia['starttime']))
{
if($rowjia['endtime']=="")//如果加班的下班时间为空,插入0 {
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','0','0','0')";
}else
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','0','0','".$logtime[1]."')";
}
}
mysql_query($insert);
}
//联表查询,条件是工卡号,这里查出这个人的工号和打卡时间
$rs=mysql_query($sql);
while($row=mysql_fetch_array($rs)){
$logtime=explode(" ",$row['logtime']);
//拆分时间 $logtime[0]是日期 $logtime[1]是时间
$sid=$row['id'];
$sql1="select * from _classassign where state!=1 and sid=".$sid;//查詢班次id,條件是工卡號
$rs1=mysql_query($sql1);
while($row1=mysql_fetch_array($rs1))
{
//月 年
$search="select * from attandance_".$txtmonth."_".$txtyear." where sid=".$row['id']." and DATE='".$logtime[0]."'";//查要插入的表,条件是id和日期
$rssearch=mysql_query($search); $num=mysql_num_rows($rssearch);
$sql2="select * from _workhourclass where state!=1 and id=".$row1['cid'];//根據班次id查出班次的排班時間
$rs2=mysql_query($sql2);
$row2=mysql_fetch_array($rs2);
$sqljiaban="select * from _departmentovertimeinfo where state!=1 and sid=".$row['id'];
$rsjiaban=mysql_query($sqljiaban);//根據sid查出此sid申請加班的時間
$rowjia=mysql_fetch_array($rsjiaban);
//注意这里,这样判断跨天时间有问题,但是班次又有多个,又不知拿哪个班次时间去比较 if($num==0){ //如果查出符合条件的记录为空就添加到表 if($logtime[1]>="00:00"&&$logtime[1]<"06:05")//判斷第一个時間是不是跨天的
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','".$logtime[1]."','0','0','0','0','0','0')";
} //判斷時間是不是屬于班次的第一個上班時間
else if($logtime[1]>=datetime($row2['wkphase1intime'])&&$logtime[1]<datetime3($row2['wkphase1outtime']))
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','".$logtime[1]."','0','0','0','0','0')";
}
//判斷時間是不是屬于班次的第二個下班時間
else if($logtime[1]>=datetime3($row2['wkphase1outtime'])&&$logtime[1]<datetime($row2['wkphase2intime']))
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','".$logtime[1]."','0','0','0','0')";
//判斷時間是不是屬于班次的第三個上班時間
}else if($logtime[1]>=datetime($row2['wkphase2intime'])&&$logtime[1]<datetime3($row2['wkphase2outtime']))
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','".$logtime[1]."','0','0','0')";
//判斷時間是不是屬于班次的第四個下班時間
}else if($logtime[1]>=datetime3($row2['wkphase2outtime'])&&$logtime[1]<datetime4($row2['wkphase2outtime']))
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','".$logtime[1]."','0','0')";
//判斷時間是不是屬于班次的第五個上班時間
}else if($logtime[1]>=datetime($rowjia['starttime'])&&$logtime[1]<datetime2($rowjia['starttime']))
{
if($rowjia['starttime']=="")//如果加班的上班时间为空,插入0
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','0','0','0')";
}else
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','0','".$logtime[1]."','0')";
}
//判斷時間是不是屬于班次的第六個下班時間, 这个时间就是凌晨00:00以前到加班的上班时间之间
}else if($logtime[1]<="23:59"&&$logtime[1]>=datetime2($rowjia['starttime']))
{
if($rowjia['endtime']=="")//如果加班的下班时间为空,插入0 {
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','0','0','0')";
}else
{
$insert="insert into attandance_".$txtmonth."_".$txtyear."(sid,cid,DATE,weekday,cardtime1,cardtime2,cardtime3,cardtime4,cardtime5,cardtime6) values(".$row['id'].",".$row2['id'].",'".$logtime[0]."','".weekday($logtime[0])."','0','0','0','0','0','".$logtime[1]."')";
}
}
mysql_query($insert);
}
{
if($logtime[1]>="00:00"&&$logtime[1]<"06:05")//如果时间是跨天的时间
{
$time=explode("-",$logtime[0]);//拆分日期
$row4=mysql_fetch_array(mysql_query($search));
if($row4['cardtime4']=="00:00:00"&&$row4['cardtime5']=="00:00:00"&&$row4['cardtime6']=="00:00:00")//如果时间为四个,跨时就会空三个,补到最后下班时间四
{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime4='$logtime[1]' where sid=".$row['id']." and DATE='".$time[0]."-".$time[1]."-0".($time[2]-1)."'"; //把跨天的时间更新到上一天的cardtime4里
}else if($row4['cardtime2']=="00:00:00"&&$row4['cardtime3']=="00:00:00"&&$row4['cardtime4']=="00:00:00"&&$row4['cardtime5']=="00:00:00"&&$row4['cardtime6']=="00:00:00")
{
//如果時間為二個,跨時的是第二個,就會空五個,把跨天的時間補到第二個時間裏
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime2='$logtime[1]' where sid=".$row['id']." and DATE='".$time[0]."-".$time[1]."-0".($time[2]-1)."'";//把跨天的时间更新到上一天的cardtime2里
}
else if($row4['cardtime5']!="00:00:00")//如果第五个时间不为空,把跨天的时间补到上一天的第6个时间里
{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime6='$logtime[1]' where sid=".$row['id']." and DATE='".$time[0]."-".$time[1]."-0".($time[2]-1)."'"; //把跨天的时间更新到上一天的fingertime6里
}
////////////////////////////////////////////////////////////////
$update2="update attandance_".$txtmonth."_".$txtyear." set cardtime='0' where sid=".$row['id']." and DATE='".$logtime[0]."'";//把跨天的时间更新到上一天的cardtime6里,再把跨天时间cardtime1更新为0
mysql_query($update2);
}
//更新時間1
else if($logtime[1]>=datetime($row2['wkphase1intime'])&&$logtime[1]<datetime3($row2['wkphase1outtime']))
{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime1='".$logtime[1]."',cid=".$row2['id']." where sid=".$sid." and DATE='".$logtime[0]."'";
} //更新時間2
else if($logtime[1]>=datetime3($row2['wkphase1outtime'])&&$logtime[1]<datetime($row2['wkphase2intime']))
{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime2='".$logtime[1]."',cid=".$row2['id']." where sid=".$sid." and DATE='".$logtime[0]."'";
//更新時間3
}else if($logtime[1]>=datetime($row2['wkphase2intime'])&&$logtime[1]<datetime3($row2['wkphase2outtime']))
{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime3='".$logtime[1]."',cid=".$row2['id']." where sid=".$sid." and DATE='".$logtime[0]."'";
//更新時間4
}else if($logtime[1]>=datetime3($row2['wkphase2outtime'])&&$logtime[1]<datetime4($row2['wkphase2outtime']))
{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime4='".$logtime[1]."',cid=".$row2['id']." where sid=".$sid." and DATE='".$logtime[0]."'";
//更新時間5
}else if($logtime[1]>=datetime($rowjia['starttime'])&&$logtime[1]<datetime2($rowjia['starttime']))
{
if($rowjia['starttime']=="")
{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime5='0',cid=".$row2['id']." where sid=".$sid." and DATE='".$logtime[0]."'";
}else{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime5='".$logtime[1]."',cid=".$row2['id']." where sid=".$sid." and DATE='".$logtime[0]."'";
}
//更新時間6 这个时间就是凌晨00:00以前到加班的上班时间之间
}else if($logtime[1]<="23:59"&&$logtime[1]>=datetime2($rowjia['starttime']))
{
if($rowjia['endtime']=="")
{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime6='0',cid=".$row2['id']." where sid=".$sid." and DATE='".$logtime[0]."'";
}else{
$update1="update attandance_".$txtmonth."_".$txtyear." set cardtime6='".$logtime[1]."',cid=".$row2['id']." where sid=".$sid." and DATE='".$logtime[0]."'";
}
}
mysql_query($update1);
}
}
}
echo $txtyear."年".$txtmonth."刷卡时间己导入";
代码如上,大家不必看得太认真,指出逻辑上哪有错就行了!
要准确知道上下班是需要两个读卡器的
进门代表上班,出门代表下班如果只有一个读卡器只能用在简单情况(只能有一次上下班)
现在的控制器一般都支持两个读卡器
加多一个读卡器也不需多少钱