PHPで書かれたソーシャルネットワーキング機能を備えたWebに通知を保存するための単純なMySQLテーブルがあります。
+----------------------+
| Notifications |
+----------------------+
| (PK) notification_id |
| user_id |
| uri |
| message |
| seen |
| created_at |
+----------------------+
- notification_idは PK です (かなり自明です)
- user_idは、通知を受け取るユーザーの ID です。
- uriは、ユーザーが通知をクリックしたときにブラウザーが移動する内部 URI であり、ほとんどの場合、個々の発生したイベント ページにリンクします (通知がコメントに関するものである場合、ユーザーの写真のパーマリンクにリンクするなど)。
- messageは通知メッセージです
- seenはブール値として保存され、通知が読まれたかどうかを示します(この質問で最も重要な部分です)。
- created_atは単なるタイムスタンプです
私はほとんどの通知メカニズムを実行しましたが、残りは表示/非表示の部分です。
上部のナビゲーション バーのドロップダウン メニューに表示されていない通知のみを表示したい (Facebook のように)。ユーザーは、すべての通知を表示するページへのリンクをクリックできます。
コードを表示としてマークするトリガーを配置するのに最適な場所はどこですか? 指定されたユーザーが通知の内容を読み、個々のイベント ページに到達したとき (つまり、クリックしたとき) に「見た」とマークする必要があります。
私はいくつかの方法を考えましたが、別の選択肢を歓迎します。
- javascript を使用してユーザーの通知のクリックを傍受し、通知の URI に進む前に「見たものとしてマーク」する ajax 要求を行う
- 宛先 URL に PHP スクリプトを作成して、データベース内の表示されたレコードを更新します。この方法の問題点は、個々の投稿と通知レコードの間に 関係がないことです。