2013-07-24 50 views
0

好的,所以我創建了工作崗位上的工單系統。找出用戶是否讀過帖子

有三個表:

工作id|subject|flag|status|deadline|ts

id|jobID|userID|vocation

交換id|details|foreignID|table|polyflag|userID|ts

基本上創建一個工作,插入job,團隊建立並插入到team和任何職位和對話這個特定的工作是放入exchange

但我想要做的是找出用戶是否沒有閱讀任何職位的特定工作。因爲目前他們不得不真的進入工作頁面,看看他們沒有看到有什麼新東西。如果他們的工作清單特別大,這將成爲一個問題。

所以,如果用戶發佈新的東西,他們還沒有加載作業並看到它,我想能夠以某種方式向他們展示它。問題是我不知道我該怎麼做。

對此提出建議?

+0

顯示帖子列表以及鏈接到作業頁面(如果有幫助的話),那麼用戶可以查看帖子流而不必查看單個作業(但是如果他們想要查看它們就有鏈接完整的工作記錄) – Tocacar

回答

0

看到這裏的答案後,我想出了自己的解決方案,所以只是爲了記錄,我會把它放在這裏;因爲沒有其他答案真的爲我削減它。

好的。所以我對其他答案的厭惡確實源於我不想創建另一個表的事實。我討厭用無意義的表格堵塞我的數據庫,我想要一個更好的解決方案。

所以我體改表team到:

團隊:id|jobID|userID|vocation|exchangeID

添加列exchangeID,基本上存儲最新交換的ID,這個用戶閱讀。每次用戶查看作業時都會更新。很簡單。

然後爲了找出有多少新帖子,我簡單地從exchange中獲取與該作業相關的所有ID的列表,並找出列表中我的team的位置。 exchangeID坐下來,然後返回剩餘的行給我未讀的帖子。

然後,我將這段代碼(長約20行)粘貼到一個setInterval中,該數據將數據加載到作業視圖頁面上,以便現在如果任何人在沒有人查看的情況下發布到作業,現在會自動更新!光滑!

感謝您的幫助StackOverflow!

0

您可以添加一個帶有user_id,job_id列的新表格,並且每次有人查看插入它的作業(僅限第一次),因此您可以輕鬆地從此表中選擇並查看用戶查看或是否看到某個用戶

0

使用userID,postID和readStatus創建另一個名爲readPostStatus的表。

然後在帖子上,所有狀態對於讀取狀態都是錯誤的。 (有許多的方式來顯示這些結果)

然後當一個特定的用戶讀取後,編輯readPostStatus表,標誌着用戶ID和帖子ID爲true readStatus

+0

那麼,當另一個用戶發佈作業時,我必須插入X行(每個用戶1個)表示他們沒有看到?那麼當他們查看帖子時改變? – Chud37

+0

從來沒有提到能夠發佈到一份工作中,我認爲他們只會添加另一份工作,但從來沒有,是的,只是循環所有允許的用戶並插入他們的用戶ID,這將是一個非常簡單的查詢並且不會有很大的負載分擔,因爲您只是傳遞整數,所以服務器不會承受壓力。另外,一個不錯的想法可能是使用ajax或jquery在帖子上顯示未讀/讀條件 –

0

我想你有興趣用戶是工作團隊的一部分,而不是用戶創建工作。另外我猜想有一個用戶表(userIDTeam是一個外鍵)。

你基本上想要的是一個查看計數器,每個User每個Job。這看起來像兩個表格之間的多對多關係。我建議這樣做的最好方法是製作另一個名爲UserJob的表格,或者更有用的其他表格,其中包含以下字段:jobID,userIDviewCount。加載作業頁面時,運行查詢以檢查加載該作業的此表中是否存在一條記錄,供用戶加載該頁面。如果沒有,那麼你創建它(並將計數初始化爲1)。否則,你增加查看計數。

如果你不關心計數,只是看是否已經看到,那麼你不需要麻煩增加計數。您可能想要將該字段命名爲hasSeen,而不是viewCount

編輯:忘了說你可以通過查詢這個表格並檢查一行是否存在(hasSeen設置爲1)來輕鬆地檢查用戶是否已經看到一個工作。根據您的結構,您可能希望在將用戶分配給作業時自動添加此表的行(hasSeen設置爲0)。

+0

基於時間戳是否沒有奇特的方法來實現它? – Chud37

+0

如果您對用戶最後一次查看作業感興趣,則可以存儲時間戳而不是視圖計數(也許用NULL表示「從不」)。這將允許您計算用戶是否看到了某個特定時間發生的工作變化。 – gandaliter