선생님들..혹시 출석체크 수정가능하나요..?
관련링크
본문
안녕하세요 다름이아니라..
http://sir.co.kr/g5_plugin/937 위 링크의 출석체크를 이용중입니다.
그런데 ..동시간대에 출석체크가 되면 순서에 맞지않게 출력이 되는현상이 발생했습니다.
회원님들의 원성으로..하루빨리수정해야할 것 같은데..
어떻게 어느부분을 수정해야 할지 몰라 이렇게
잘 아시는분들에게 도움을 요청하게 됬습니다 ㅠ.ㅠ
문제이미지
위와같이 동시간대 00:00:06에 3명의 출석체크가 이루어졌으나
순서대로 포인트지급이아니여서 ..어떻게 해야할까요 ..?
이 부분에서 어디를 수정해야할까요 ..?
<?php
include_once('./_common.php');
// 비회원
if (!$is_member) {
alert("로그인 후 이용하세요.");
}
// 출석 시간 체크
if (date("H:i:s") < $attend['sta'] || date("H:i:s") > $attend['eta']) {
alert("출석 시간이 아닙니다.");
}
if($attend[power] == 0){
alert("출석권한이 없어 아무도 출석체크를 못합니다.");
}
if($attend[power] == 2 && !$is_admin){
alert("관리자만 출석 가능합니다.");
}
// 오늘 출석했나?
$sql = " select * from g5_attendance where mb_id = '$member[mb_id]' and substring(datetime,1,10) = '".G5_TIME_YMD."' ";
$check = sql_fetch($sql);
// 출석했다면.
if ($check['mb_id']) {
alert("이미 출석 하였습니다.");
}
$sql = " select count(*) as cnt from g5_attendance where ip = '$_SERVER[REMOTE_ADDR]' and substring(datetime,1,10) like '%".G5_TIME_YMD."%' ";
$ip_check = sql_fetch($sql);
if ($ip_check[cnt] >= $attend[ip_check]) {
alert("하루 출석 IP 초과하였습니다.");
}
// 1일 뺀다.
$day = date("Y-m-d", G5_SERVER_TIME - (86400 * 1));
// 어제 출석했나?
$sql = " select * from g5_attendance where mb_id = '$member[mb_id]' and substring(datetime,1,10) = '$day' ";
$row = sql_fetch($sql);
$sql2 = " select count(*) as cnt from g5_attendance where mb_id = '$member[mb_id]' ";
$row2 = sql_fetch($sql2);
// 어제 출석했다면.
if ($row['mb_id']) {
// 전체 개근에 오늘 합산.
$sql_day = $row['day'] + 1;
// 지난 개근체크에 오늘 합산.
$reset = $row['reset'] + 1;
// 개근 체크
if ($reset == 7) {
$sql_reset = $reset;
$sql_point = $attend['week_point'];
} elseif ($reset == 30) {
$sql_reset = $reset;
$sql_point = $attend['month_point'];
} elseif ($reset == 365) {
$sql_reset = $reset;
$sql_point = $attend['year_point'];
} else {
$sql_reset = $reset;
$sql_point = $attend['point'];
}
} else {
// 출석하지 않았다면.
// 전체 개근 설정
$sql_day = "1";
// 개근 1일 설정
if($attend[initialization] == 0){
$reset = $row2['cnt'] + 1;
}else{
$reset = "1";
}
// 개근 체크
if ($reset == 7) {
$sql_reset = $reset;
$sql_point = $attend['week_point'];
} elseif ($reset == 30) {
$sql_reset = $reset;
$sql_point = $attend['month_point'];
} elseif ($reset == 365) {
$sql_reset = $reset;
$sql_point = $attend['year_point'];
} else {
$sql_reset = $reset;
$sql_point = $attend['point'];
}
}
// 첫출근
$sql = " select count(*) as cnt from g5_attendance where substring(datetime,1,10) = '".G5_TIME_YMD."' ";
$first = sql_fetch($sql);
// 아무도 없다면..
if ($first['cnt'] == 0) {
$sql_fpoint = $attend['first_point'];
}elseif($first['cnt'] == 1){
$sql_fpoint = $attend['second_point'];
}elseif($first['cnt'] == 2){
$sql_fpoint = $attend['third_point'];
}elseif($attend[bonus] == 0){
$sql_fpoint = $sql_point;
}
if($attend[bonus] == 1) {
$point = $sql_point+$sql_fpoint;
}elseif($attend[bonus] == 0){
$point = $sql_fpoint;
}
// 기록
$sql = " insert into g5_attendance
set mb_id = '$member[mb_id]',
subject = '".$_POST['subject']."',
day = '$sql_day',
reset = '$sql_reset',
mb_point = '$point',
datetime = '".G5_TIME_YMDHIS."',
ip = '".$_SERVER['REMOTE_ADDR']."' ";
sql_query($sql);
// 출석 포인트 지급
insert_point($member['mb_id'], (int)($point * 1), "출석 포인트", "@attendance", $member['mb_id'], G5_TIME_YMD);
// 완료
alert("출석체크완료", "./");
?>
답변 2
아 에이머스너님 안녕하세요. ㅎㅎ 제가 사이트 관리를 너무 안한점 죄송하구요.
일단 해당 출석부에서 어쩔수없이 그런현상이 나오는거 같습니다.
제가 2.0 버전을 지금 출시를 위해 저제외하고 개발자 나 공동 작업자를 구해 좀더 빠르고 좀더 효율적으로 버그를 잡아서 새롭게 배포하도록 하겠으며.
지금 생긴문제는 mysql 체크 부분에서 출석이 꼬일경우 생기는 현상인거 같습니다. 제가 다음 업데이트때 date 값에서 밀리세컨드 값을 구현하여 좀더 세밀하게 작업하도록하겠습니다. ㅎㅎ