好的,我的問題有點具體,很難解釋。所以我會盡量簡化。
我有一個MySQL表格,裡面顯示著網站上的「提示」。這些提示會依照「順序」列中的整數排序。所以表格看起來像這樣:id(int自增),提示(varchar),順序(int)。
現在,當第一個提示顯示給使用者時,它會一直顯示,直到使用者確認,然後顯示下一個提示,依此類推。
我想出了一個查詢,根據用戶上次確認的提示來獲取下一個提示:
SELECT hint FROM hints WHERE `order` > $last_seen_item_order ORDER BY `order` DESC LIMIT 1
這個查詢很好用。然而,我們有時也需要添加新的提示,通常不是添加在最後一個提示,而是在中間某個位置。所以例如,使用者看到了順序為#6的最後一個提示,但我們在位置#3新增了新的提示。這個新的提示將永遠不會顯示給這個用戶,因為我們已經保存了他已經看過提示#6。
有沒有辦法來管理這個問題?可能只需要一個或兩個MySQL查詢嗎?
提前感謝任何幫助和提示。
編輯:每個使用者都有自己的「已看狀態」。我們簡單地將其保存在PHP的$_SESSION['last_seen_item_order']中。
您不能按照這種邏輯來管理它。
為此,您需要維護一個額外的欄位 -
seen
如果使用者已經看到了hints
,您可以將其設定為1
因此,您的查詢將是 -注意 - 這是我建議的做法。您可以有很多其他的想法。
編輯 - 如果您想要按使用者維護提示,那麼您可能有兩個選項來維護
seen
。json
格式的已看到提示。user_hints_see
的單獨表,其中包含id
(自增)、user_id
、hint_id
、seen
列。