2012-11-05 3 views
0

사용자에게 배지를 해제했음을 알리는 가장 좋은 방법에 대한 아이디어를 얻고 자 브레인 스토밍을했습니다. 그것은 즉각적으로 살아갈 필요가 없습니다. 적어도 대시 보드를 볼 때마다 상황을 확인하기 위해 실행될 것이라고 생각했습니다. 다음은 제가 생각해 왔던 일반적인 방향입니다.배지 잠금 해제 알림 설정

두 개의 테이블이 있습니다. 하나는 badge_status이고 다른 하나는 사용자 테이블입니다.

users 테이블에 사용자 및 Badge1, Badge2, Badge3 등과 같은 배지 필드가 있습니다. 배지 필드의 기본값은 "locked"로 설정되어 있습니다. 사용자가 배지를 잠금 해제하기위한 적절한 조치를 취하면 필드는 "잠금 해제"됩니다.

알림과 같은 설정을 생각하고 있었지만 과도하거나 쉬운 방법이 있는지 궁금해하고 있습니까?

<?php 
$db = new PDO('mysql:host=hostname;dbname=dbname;charset=UTF-8', 'username', 'password'); 
$username = $_SESSION['jigowatt']['username']; 
$statement = $db->prepare("SELECT badge1, badge1_status FROM login_users, status_table WHERE username = :username"); 
$badge1 = $row['badge1']; 
$badge1_status = $row['badge1_status']; 



if($badge1_status == "finished") { 
} 
else if($badge1 =="unlocked") { 
// Show fade in pop up div for notification <div id="notification-div">Badge Unlocked!</div> 
$setBadgeValue = $db->prepare("UPDATE status_table SET badge1_status='finished' WHERE username= :username"); 

} 

<? 

나는 배지 1의 상태가 "완료"경우 다음 따라서 통지 한 번만 표시 확인하고, 아무것도하지 않습니다 설정 두 번째 테이블을 가질 것이다.

badge1s 상태가 "unlocked"이면 알림 DIV를 표시 한 다음 badge1_status 테이블에 "finished"로 씁니다.

사이드 노트에서 나는 적절한 PDO로 변환 중입니다. 이 설정에서 제공 할 수있는 조언, 팁 또는 개선에 감사드립니다!

사용자 테이블의 열 각 배지에 정보를 넣어보다는, 예를 들어, 사용자와 배지 사이에 가입 할 수 있습니다 상호 참조 테이블을 만들 :

요청으로
+0

답변이 없지만 [에뮬레이트 된 준비된 문구 사용 안 함] (http://stackoverflow.com/a/60496/508666)을 원할 수 있습니다. – PeeHaa

+0

배지가 잠금 해제 된 날짜/시간을 단순히 나열하고 잠금 해제 알림이 마지막으로 발행 된 시간을 추적하는 것이 좋습니다. 그 이후로 잠금 해제 된 모든 배지는 "새 것"입니다. 통지를 표시하고, "마지막으로 통지 된"시간 소인을 갱신하고 완료하십시오. –

+1

"사용자 테이블에 Badge1, Badge2, Badge3과 같은 배지 필드가 있습니다."정말요? 이는 상호 참조 테이블에 포함됩니다 (사용자 및 배지에 합류). –

답변

1

, 여기에 내 의견의 답변 버전의

users (user_id, name) 
badges (badge_id, name) 
user_badges (user_id, badge_id, date_earned) 

user_badges와 참조 된 두 테이블 간의 외래 키 설정.

이렇게하면 배지를 무제한으로 사용할 수 있습니다. 나중에 새 테이블을 추가하는 것은 사용자 테이블을 변경하려고 시도하는 것보다 user_badges에 행을 추가하는 것만 큼 간단합니다.