반응형
아보카도 에디션 기반의 보상 캘린더 개발
테이블이 존재하지 않을 경우
보상 여부 기록용 (로그) 테이블을 하나 작성한다.
if (!sql_query(" DESCRIBE {$g5['rewards_calendar']} ", false)) {
// 테이블이 존재하지 않으면 생성
$reward_sql = "CREATE TABLE IF NOT EXISTS `{$g5['rewards_calendar']}` (
`rc_id` INT(11) NOT NULL AUTO_INCREMENT,
`ch_id` INT(11) NOT NULL,
`bo_board` VARCHAR(100) NOT NULL COMMENT '게시판 ID',
`wr_id` INT NOT NULL COMMENT '보상 받은 글 번호',
`rc_type` VARCHAR(50) NOT NULL COMMENT '보상 유형 (재화, 경험치 등)',
`rc_amount` INT NOT NULL COMMENT '보상 수량',
`rc_it_id` INT NOT NULL COMMENT '아이템 ID',
`rc_date` DATE NOT NULL COMMENT '보상 지급 날짜',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '지급 시각',
PRIMARY KEY (`rc_id`),
UNIQUE KEY `user_date_unique` (`ch_id`, `rc_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='보상 지급 기록';";
sql_query($reward_sql, true);
}
/**
* 재화 지급 로그에 저장되는 데이터
* wr_1 : rc_date (보상 지급 날짜)
* wr_2 : rc_type (보상 유형)
* wr_3 : rc_amount (보상 수량)
* ry_type이 아이템이면 wr4에 아이템 ID(rc_it_id) 저장
*/
테이블이 존재할 경우
해당 멤버 캐릭터 아이디로 테이블에서 select한다.
else {
$reward_sql = "SELECT * FROM {$g5['rewards_calendar']} WHERE ch_id = '{$member['ch_id']}'";
$reward_result = sql_query($reward_sql);
// 보상 받은 날짜 배열 생성
$received_rewards = [];
while ($row = sql_fetch_array($reward_result)) {
$received_rewards[] = $row['rc_date'];
}
// JSON 데이터로 JavaScript에 전달
echo "<script>const receivedRewards = " . json_encode(value: $received_rewards) . ";</script>";
}
* 할 것
1) 로그 select할 때 월 단위로 데이터 불러올 수 있도록. 전체 데이터 불러오지 말 것.
반응형
'TIL' 카테고리의 다른 글
[php] 캐릭터 게시판 스킨 만들기 - 1 (0) | 2024.12.22 |
---|---|
[php] 캘린더 개발 - 2 (0) | 2024.12.22 |
[dart] RenderBox was not laid out / Failed assertion: line 2164 pos 12: 'hasSize' 에러 (3) | 2024.09.15 |
[PHP] session을 사용하여 비밀번호 입력 시에만 오픈되는 상점 만들기 (0) | 2024.07.19 |
[PHP] isset 함수와 $_SERVER['PHP_SELF'] : 학년별로 데이터 불러오기 (0) | 2024.07.06 |