선생님들..혹시 출석체크 수정가능하나요..?

선생님들..혹시 출석체크 수정가능하나요..?

QA

선생님들..혹시 출석체크 수정가능하나요..?

본문

안녕하세요 다름이아니라..

 

http://sir.co.kr/g5_plugin/937 위 링크의 출석체크를 이용중입니다. 

그런데 ..동시간대에 출석체크가 되면 순서에 맞지않게 출력이 되는현상이 발생했습니다.

 

회원님들의 원성으로..하루빨리수정해야할 것 같은데..

어떻게 어느부분을 수정해야 할지 몰라 이렇게

잘 아시는분들에게 도움을 요청하게 됬습니다 ㅠ.ㅠ

 

문제이미지

f7edf304812e5f4bfb068575b9e9f1fa_1448733193_8727.PNG

 

 

위와같이 동시간대 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 값에서 밀리세컨드 값을 구현하여 좀더 세밀하게 작업하도록하겠습니다. ㅎㅎ

익명님 혹시 ...

그누레벨별 30일 개근 시 포인트를 달리 주고 싶은데요 ..

  // 개근 체크
  if ($reset == 7) {
    $sql_reset = $reset;
    $sql_point = $attend['week_point'];
  } elseif ($reset == 30) {
    $sql_reset = $reset;
    $sql_point = $attend['month_point'];

if ($member['mb_level'] == 3) $sql_point = $sql_point + 0;
if ($member['mb_level'] == 4) $sql_point = $sql_point + 2000;
if ($member['mb_level'] == 5) $sql_point = $sql_point + 4000;
if ($member['mb_level'] == 6) $sql_point = $sql_point + 7000;
// 기록

이렇게 기록하면 될 것 같아서 적용했으나..
추가 포인트 설정이 적용되지않습니다ㅠ.ㅠ

어떻게 해야 30일 개근 시 그누레벨별 추가포인트를 줄 수 있나요 ???

너무너무 중요해서...이렇게 질의드려요 ㅠ.ㅠ

if ($member['mb_level'] == 3) $sql_point = $sql_point + 0;
else if ($member['mb_level'] == 4) $sql_point = $sql_point + 2000;
else if ($member['mb_level'] == 5) $sql_point = $sql_point + 4000;
else if ($member['mb_level'] == 6) $sql_point = $sql_point + 7000;


else 값 줘보셨나요 ?

제작자 홈피 게시판에 문의하시면 빨리 답변받으실 수 있을듯싶네요.

 

http://boan.pw/bbs/board.php?bo_table=bug 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,673 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT