게시글의 내용 중 일부를 Point 차감하고 보게 할 수 있을까요?
본문
누구나 게시글을 볼 수 있되,
게시글 내용 중 일부를 기본적으로 숨김처리하고, "보기" 버튼을 클릭해서 Point 차감하고 보게하고 싶습니다.
예를 들어, "코가 긴 동물의 이름은?" 이라는 문제에 대한 힌트를 주고 싶은데요.
힌트 1. 정답 글자수 "보기" -> 3
힌트 2. 첫번째 글자 "보기" -> 코
힌트 3. 두번째 글자 "보기" -> 끼
힌트 4. 세번째 글자 "보기" -> 리
이런식으로 힌트를 보려면 포인트를 차감하고 볼 수 있고,
다음에 다시 해당 게시물을 조회했을 때, 이미 보았던 힌트는 포인트 차감없이 기본으로 보이도록 하고 싶어요.
답변 4
할 수는 있는데 원하시는걸 다 답변으로 받을수 있을지는 모르겠네요.
볼때마다 해당에 대한 정보를 디비에 저장해두고 비교하면서 보여주거나 하시면 될거 같습니다.
네 구현이야 가능합니다만
글 보기시 포인트 차감내역에 따라 기록해두고
오픈 글자수 기록해두어 그만큼 오픈해서 보여주면 될듯 합니다.
구현한다면 ajax로 하는 것을 권합니다.
이렇게 해보는건 어떠실까요?
<?php
// 사용자의 포인트 정보를 가져오는 함수
function get_user_points($user_id) {
// 포인트 정보를 데이터베이스 등에서 가져오는 로직
// 예: SELECT points FROM users WHERE user_id = $user_id
// 포인트 정보를 반환
return $points;
}
// 사용자의 포인트를 차감하는 함수
function deduct_points($user_id, $points) {
// 사용자의 포인트를 차감하는 로직
// 예: UPDATE users SET points = points - $points WHERE user_id = $user_id
// 차감 결과를 반환
return $deducted;
}
// 게시글의 힌트 정보
$hints = [
1 => "정답 글자수: 3",
2 => "첫번째 글자: 코",
3 => "두번째 글자: 끼",
4 => "세번째 글자: 리"
];
// 사용자 정보 (예: 로그인한 사용자의 ID)
$user_id = 123;
// 게시글의 ID
$post_id = 456;
// 사용자의 포인트 정보 가져오기
$user_points = get_user_points($user_id);
// 게시글을 조회한 적이 있는지 확인
$has_viewed_post = check_if_user_has_viewed_post($user_id, $post_id);
// 힌트를 보기 위해 포인트를 차감하고 힌트 내용 출력
if ($has_viewed_post) {
// 이미 게시글을 조회하여 힌트를 보았을 경우
// 힌트 내용을 기본으로 보여줌
foreach ($hints as $hint) {
echo $hint . "<br>";
}
} else {
// 게시글을 처음 조회하여 힌트를 보는 경우
// 포인트 차감 로직을 추가하여 포인트 차감 후 힌트를 보여줌
$points_to_deduct = 1; // 힌트를 보기 위해 차감할 포인트
if ($user_points >= $points_to_deduct) {
// 포인트 차감 가능한 경우
deduct_points($user_id, $points_to_deduct);
mark_post_as_viewed($user_id, $post_id); // 게시글을 조회한 것으로 표시
foreach ($hints as $hint) {
echo $hint . "<br>";
}
} else {
// 포인트 차감 불가능한 경우
echo "포인트가 부족하여 힌트를 볼 수 없습니다.";
}
}
?>