0

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 スクリプトを作成して、データベース内の表示されたレコードを更新します。この方法の問題点は、個々の投稿と通知レコードの間に 関係がないことです。
4

1 に答える 1

1

私が同様の状況にあった場合 (そしてイベント システムを実装していなかった場合)、通知リンクをパススルー スクリプトにします。そのスクリプト内で、通知を表示済みとしてマークし、ユーザーをリダイレクトするだけです。通知とオブジェクトは関連していないため、GET 要求パラメーター (?type=photo&id=1¬ification=1) を使用して、どのオブジェクトなどを把握できます。

Javascript を使用してそれを行うことはお勧めしません...私の意見では、信頼性が低すぎます。ユーザーが実際にブラウザーなどで Javascript を有効にしているかどうかはわかりません。

于 2012-04-07T16:19:32.660 に答える