2013-12-19 57 views
0

我有一個網站,人們可以發佈帖子並關注其他用戶。我有一個側欄,其中有一個值可以跟蹤自上次訪問後發佈的帖子數量。自上次訪問以來的帖子數量

我想我應該如何處理這個問題。我應該在數據庫中創建一個名爲notifications的全新表格,它將保存用戶的ID和自上次訪問以來發布的帖子數量,我應該只在現有用戶表中爲此值添加一列,還是應該使用完全不同的方法?

謝謝。

+0

爲什麼不直接在Posts對象中創建一個方法來返回自上次訪問以來發布的帖子數,並將用戶作爲參數? – Dan

回答

1

首先:想一想,這是哪個對象的屬性。在你的情況下,計數會因用戶而異,所以我們可以假設它是一個用戶屬性。

我們可以將它掛在最後一次登錄,但如果用戶長時間登錄,這會給我們一個錯誤的計數(用戶不想知道自他上次登錄以來的計數,但自從他最後的活動!)。

所以最簡單的方法可能是在用戶表中添加一個字段,該字段包含最後一個帖子ID - 我們只需SELECT MAX(id) FROM posts並更新users.lastSeenPost並在每個用戶操作中更新users.lastSeenPost結果。然後我們可以顯示MAX(post.id)-users.lastSeenPost作爲新的帖子數量。

0

每個帖子都有製作時的日期記錄。

每個用戶都會有一個日期記錄,記錄他/她上次登錄的時間。

通過下面的SQL語句,你可以問的數據庫,因爲用戶登錄的最後返回的職位數:

SELECT COUNT(*) FROM `posts` WHERE `posts.post_date` > `user.lastlogin_date` 
+0

雖然大多數人不再註銷網站,那麼這隻會在他們真正登錄時才起作用嗎? – Bagwell

+0

這顯示自用戶登錄以來的新帖子數量,而不是他上次操作後的數量!如果用戶登錄了幾個小時,這可能是錯誤的數量級。 –

+0

@Bagwell請指定'最後一次訪問',然後:-)可能意味着最後一次登錄,最後一次訪問頁面,或者甚至上一次異步訪存發佈次數。 – snwflk

0

我建議你將創建一個cookie($ _COOKIE [「lastPostId」] )在每個客戶網頁瀏覽器中輸入您的帖子的最後一個ID,當用戶返回時,您將讀取$_COOKIE['lastPostId']並查詢您的數據庫爲SELECT * FROM posts WHERE id>lastPostId