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

10년 전 조회 7,125

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

 

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개

채택된 답변
+20 포인트
10년 전

아 에이머스너님 안녕하세요. ㅎㅎ 제가 사이트 관리를 너무 안한점 죄송하구요.

 

일단 해당 출석부에서 어쩔수없이 그런현상이 나오는거 같습니다. 

제가 2.0 버전을 지금 출시를 위해 저제외하고 개발자 나 공동 작업자를 구해 좀더 빠르고 좀더 효율적으로 버그를 잡아서 새롭게 배포하도록 하겠으며.

지금 생긴문제는 mysql 체크 부분에서 출석이 꼬일경우 생기는 현상인거 같습니다. 제가 다음 업데이트때 date 값에서 밀리세컨드 값을 구현하여 좀더 세밀하게 작업하도록하겠습니다. ㅎㅎ

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

감사합니다... 급한대로 어쩔 수 없이 비용을 주고 ..약간의 수정을 했으나
얼른 2.0버전 쓰고싶어요 ㅠ.ㅠ
익명님 혹시 ...

그누레벨별 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 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

저와 똑같은현상을 겪는분도 버그게시판에 글을썻는데...
답변이 안달리는거같아요 ..한달째 ㅠ.ㅠ
못고칠까요 ㅠ.ㅠ??

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고