2011-09-14 29 views
0

我有一個網站,允許會員上傳視頻,評論視頻,評價視頻並在論壇發帖。在現有的PHP/MySQL網站上集成經驗值(EXP)?

我也有一個「隱藏」特徵(爲適量)提供給管理員的用戶組(這基本上是一個稱爲hidden列其是boolean10),我在每個表例如;如果隱藏設置爲1它不會顯示內容,但如果設置爲0,則會顯示內容),這只是管理濫用的一項功能。

我說什麼時,我說每個表;是論壇主題有獨立的表格,視頻內容有自己的表格等等 - 但是他們(至少那些我希望使用的功能)有一些共同之處,他們都有一個名爲hidden(其中I上面解釋了它在做什麼)。

現在我正在考慮添加基本的EXP(經驗點)功能,以便成員可以通過特定的操作獲得X點的積分,例如,上傳視頻,在論壇發帖,評論視頻,評論視頻等。

總EXP會顯示在會員資料中,也會顯示在他們的活動流上(例如,發送X話題)。

但我不確定如何實現這一點,因爲我只希望總EXP考慮與活動流不相關的內容(只顯示它用於從未隱藏的內容獲得的EXP )。

dillema對我來說是由於我有多個表格包含不同的內容,並且我會定期執行cron作業來清理(刪除)隱藏的內容,我希望爲每個動作提供的EXP可以輕鬆更改 - 所以如果有一天,我決定我不再慷慨地給那些發表主題並將其改爲2的人給予50分,那麼過去創建主題的所有人也將自動生效(所以也許有EXP對於一個特定的動作是在一個類或配置文件?)。

綜述:

  1. 的EXP點給出了某些行動。
  2. EXP點可以很容易地改變(並且所有那些誰收到以前更改EXP將自動生效)。
  3. EXP點考慮到「隱藏」功能(所以只考慮不隱藏的內容)。
  4. 想在未來增加新的EXP點容易。
  5. 只需要最多一個例如4 EXP(無論採取何種行動)每天給予(使其更具挑戰性)。

我有可能做對飛的想法(如不存儲在數據庫中的EXP在所有 - 而只是做COUNT()查詢WHERE hidden = 0,然後*它多少EXP - 所以,如果含量隱藏的EXP會自動生效(這是我的想法),但倒臺可能意味着它可能意味着複雜的JOIN秒和每天最多4個可能是一個問題)?

如果你可以發表你的意見,我將不勝感激(連同一個例子 - 如果可能的話),因爲我一直在抨擊我的頭幾個小時。

欣賞您的回覆。

回答

0

我會創建一個專門用於管理數據庫中的日誌的類。我想數據庫跟蹤:

  • USER_ID
  • 原因
  • 實體
  • ENTITY_ID
  • 時間戳

實體是點數被授予的內容類型的標識符,例如, 「視頻」。 * entity_id *是實體的ID號碼(例如,爲添加視頻ID#24而獎勵2分)。 計數是一個布爾值,告訴您的系統是否要計算點數。

當管理員隱藏任何東西,無論是視頻,發佈或評級,您的日誌管理器查找該實體給出的關聯點,匹配ENTITY_ID,並設置場爲0,這可以讓你很容易得到一個特定用戶積分,但只有點應該被計算。

當用戶做任何保證接收點的任何事情時,日誌管理器可以找到在這個特定日期已經爲用戶獎勵了多少點,並且如果全部金額推動總量以上添加全部金額或差額4.

我還沒有完全想到這一點,所以我的邏輯可能存在缺陷,但這可能足以讓你開始。