[이윰] 출석부 랭킹 중복 방지하기
페이지 정보

짧은주소
-
https://yadolee.com/tip/658 주소복사
평점
본문
출석부 랭킹 중복 방지하기
이윰빌더에서 판매하는 출석부는 그누보드에 정의된 시간상수를 통해 출석시간을 초단위로 DB에 저장하는데 회원들이 동시다발적으로 출석을 하게 되면 중복순위가 나오기 마련이고 그로인해 랭킹 순위와 선착순 순위가 의도치 않는 결과를 야기함으로 출석시간이 밀리세컨드(milliseconds, 천분의 1초) 혹은 마이크로세컨드(microseconds, 백만분의 1초)로 저장되도록 수정해 보자.
아래 예제는 마이크로세컨드(microseconds) 사용시
1. 그누보드5/eyoom/user_program/page/attendance.php를 열어 // 내용글은 텍스트 필터를 검색한다.
수정 전
atd_datetime = '".G5_TIME_YMDHIS."'를 검색하여 다음과 같이 수정한다.
수정 전
atd_datetime` datetime NOT NULL default '0000-00-00 00:00:00',를 검색하여 다음과 같이 수정한다.
수정 전
2. 이윰빌더 출석부 attendance.php에 정의된 출석시간(atd_datetime)에 대한 기본 테이블 형식과 기본값을 마이크로세컨드가 적용될 수 있도록 DB관리용 프로그램(phpmyadmin, adminer)이나 커맨드, 터미널 명령어를 통해 g5_eyoom_attendance 테이블의 atd_datetime 컬럼 중 datetime 타입 길이와 기본값을 변경한다.
► 마이크로세컨드 이용시
datetime 길이를 6으로 변경
기본값을 0000-00-00 00:00:00.000000
► 밀리세컨드 이용시
datetime 길이를 3으로 변경
기본값을 0000-00-00 00:00:00.000
상기 소스는 출석부의 랭킹 순서와 연관이 없다.
다만 상기 소스로 정확한 출석 시간을 기록하면 싶다면 적용해 보도록 하자.
그누보드5/eyoom/user_program/page/attendance.php를 열어 // 순위정보 가져오기를 검색한다.
수정 전
sql_query($sql);를 검색하여 다음과 같이 수정한다.
수정 전
아래 예제는 마이크로세컨드(microseconds) 사용시
1. 그누보드5/eyoom/user_program/page/attendance.php를 열어 // 내용글은 텍스트 필터를 검색한다.
수정 전
$set = "
수정 후
//밀리세컨드, 마이크로세컨드
$t_true = microtime(true);
//$milli = sprintf("%03d",($t_true - floor($t_true)) * 1000);
$micro = sprintf("%06d",($t_true - floor($t_true)) * 1000000);
$set = "
atd_datetime = '".G5_TIME_YMDHIS."'를 검색하여 다음과 같이 수정한다.
수정 전
atd_datetime = '".G5_TIME_YMDHIS."'
수정 후
atd_datetime = '".date('Y-m-d H:i:s.'.$micro)."'
atd_datetime` datetime NOT NULL default '0000-00-00 00:00:00',를 검색하여 다음과 같이 수정한다.
수정 전
`atd_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
수정 후
`atd_datetime` datetime(6) NOT NULL default '0000-00-00 00:00:00.000000',
2. 이윰빌더 출석부 attendance.php에 정의된 출석시간(atd_datetime)에 대한 기본 테이블 형식과 기본값을 마이크로세컨드가 적용될 수 있도록 DB관리용 프로그램(phpmyadmin, adminer)이나 커맨드, 터미널 명령어를 통해 g5_eyoom_attendance 테이블의 atd_datetime 컬럼 중 datetime 타입 길이와 기본값을 변경한다.
► 마이크로세컨드 이용시
datetime 길이를 6으로 변경
기본값을 0000-00-00 00:00:00.000000
► 밀리세컨드 이용시
datetime 길이를 3으로 변경
기본값을 0000-00-00 00:00:00.000
상기 소스는 출석부의 랭킹 순서와 연관이 없다.
다만 상기 소스로 정확한 출석 시간을 기록하면 싶다면 적용해 보도록 하자.
그누보드5/eyoom/user_program/page/attendance.php를 열어 // 순위정보 가져오기를 검색한다.
수정 전
// 순위정보 가져오기
$rank = sql_fetch("select max(ranking) as max from {$g5['eyoom_attendance']} where atd_datetime like '".$date_day."%'",false);
$ranking = $rank['max']+1;
수정 후
// 순위정보 가져오기
// 랭킹 올바르게
$rank = sql_fetch("select count(ranking) as rank_no from {$g5['eyoom_attendance']} where atd_datetime like '".$date_day."%' order by atd_datetime asc",false);
$ranking = $rank['rank_no']+1;
sql_query($sql);를 검색하여 다음과 같이 수정한다.
수정 전
$sql = "insert into {$g5['eyoom_attendance']} set $set";
sql_query($sql);
수정 후
$sql = "insert into {$g5['eyoom_attendance']} set $set";
sql_query($sql);
추천인 4

레벨 147
경험치 3,236,368
Progress Bar 38.71%
- 가입일 : 2015-03-10 12:21:44
- 서명 : 인간에게 가장 큰 선물은
자기 자신에게 기회를 주는 것이다.
- 크리스 가드너, Chris Gardner -
- 자기소개 : There's never a shortcut to happiness.
-
[골라먹는 요리] 제육볶음2025-06-29
-
[좋은 생각] 선한 것은 약자를 도우려는 사람들이다2025-06-29
-
[좋은 생각] 확신에 모든 것을 잃었고 경계심에 모든 것을 지켜 냈다2025-06-29
-
[좋은 생각] 타인에게 할 것은 기대가 아니라 감사다2025-06-29
-
[좋은 생각] 시작하는 데 있어서 나쁜 시기라는 것은 없다2025-06-29
-
[좋은 생각] 세 가지 헛된 확신이 우리를 가로막는다2025-06-29
-
[좋은 생각] 술을 먹고 해결하려고 하지 마세요2025-06-29
-
[공유 자료실] Everything 1.4.1.1028 - 실시간 파일/폴더 검색 프로그램2025-06-28
-
[일일 메모장] 공감되는 말씀입니다2025-06-03
-
[일일 메모장] 그 어떤 후보도 내게 직접적인 득이 될 수 없다면 내 친지와 내 이웃에게 득이 될 것 같은 후보를 뽑으시고 여러모로 따져 보고 헤아려 보아도 그런 자질을 갖춘 이를 찾을 수 없다면 내 나라에 더 득이 되어 줄 후보를 뽑으셨으면 좋겠습니다 어쩌면 내 코가 석 자라는 말도 자유가 없다면 배 부른 소리 일 수 있습니다 어느 개념있는 배우에 대한 기사로 갈음하고 싶습니다 {글} 꼭 소중한 투표 행사하셨으면 합니다2025-06-03
-
[자유 게시판] 저 또한 소중한 하나 표를 행사하려 합니다 좋은 결과를 기대하고 싶습니다2025-06-03
-
[이슈와 관심] 29일 시청했으나 이제서야 댓글을 답니다 속이 타들어가는 느낌과 메스꺼움 그리고 온전치 않은 정신에 불편한 감정을 다스릴 수 없는 시기라 무슨 말을 피력하기가 참 어렵습니다 당분간은 이 상태일 듯 하네요 그럼에도 불구하고 뉴스타파의 노고에 박수를 보냅니다2025-06-01
-
[이슈와 관심] 미약하나마 동참했습니다2025-05-04
-
[생활 정보] 음 180원 다른 운을 기대해봐야겠네요2025-04-26
-
[생활 정보] 나라가 혼돈의 시기를 겪다 보니 봄을 만끽할 겨를 조차 느낄 수 없었네요 정보 감사합니다2025-04-07
-
[생활 정보] 새해 복 많이 받으십시오2025-01-31
댓글5
shadow2fox님의 댓글
하늘구장님의 댓글
내사랑님의 댓글
내사랑님의 댓글
하늘구장님의 댓글
축하합니다. 첫 댓글로 17경험치를 획득하였습니다.