2012-05-11 13 views
17

私は現在、友人にお気に入りを尋ねるモバイルアプリを開発中です.HTML5フロントエンドとPHPバックエンドです。私は、通知システムを構築することが最善の方法であるかというと、実際のコードそのものよりもデータベーススキーマの方が重いです。次のようにPHPでマルチ通知システムを構築するベストウェイ

モバイルアプリケーションの流れは次のとおりです。

  • ユーザーが好意
  • に選択することができ、ユーザが要求されます。人々は

PHPとMySQLでこれを行うための最善の方法は何ですかを通知され、ユーザーが選択した内容に応じて好きな友達やnotifdy closeby友人

  • を通知し、すべてのお友達に知らせますか?私はPHPコードを書いてくれる人がいるのではなく、もっとも理想的なMySQLテーブルとフィールドスキーマをマップします。あなたの助けを前にありがとう。

  • 答えて

    29

    次のような通知表を作成することができます。

    from_user | to_user | notification | seen 
    

    、次にあなたがちょうど必要な情報を持つレコードを追加し、0/falseseenを設定し、ユーザーに通知したいとき。

    通知を読み取ったユーザーは、そのパラメータを1/trueに設定します。

    例:

    from_user | to_user | notification | seen 
        -   -   -   - 
    

    ユーザーJohnは、ユーザージェフに通知:

    from_user | to_user | notification | seen 
        john  jeff  whatever.. 0 
    

    ユーザージェフは、通知をお読みください。

    from_user | to_user | notification | seen 
        john  jeff  whatever.. 1 
    
    +0

    基本的に、お気に入りの友人に通知することを選択した場合、私は最初に現在のユーザーのお気に入りのユーザーIDを取得するクエリを実行し、それらのIDごとに通知テーブルに一括挿入しますか?それは十分に論理的だと思われる。このようなものはもともと私の心を横切っていましたが、おそらく別の方法があると思いました。これは論理的なやり方のようです。 –

    +0

    @Dwayne、ええ。または、サブクエリ(http://dev.mysql.com/doc/refman/5.5/en/subqueries.html)を実行することもできます。いずれにせよ、これはこれを行うための最も論理的でクリーンな方法のようです。すべてを最適化するために7-14日以上経過した通知をすべて削除しますが、それはあなた次第です。 – Shoe

    +2

    シンプルで信頼性の高い方法+1 –

    4

    理由だけというテーブル内のすべての通知を表示しません「通知」

    以下のための通知である210
    id | user_id | from_user_id | notification 
    
    • ID =通知ID
    • のuser_id =?
    • from_user_id =誰が通知を送信しましたか?
    • 通知=メッセージ擬似コードとして次に

    // Create a notification from User A to User B 
    $this->db->insert ('notifications', array ('user_id' => $friends_id, 'from_user_id' => $current_user_id, 'notification' => $message)); 
    
    // The meanwhile, on your home page or somewhere, wherever you want to display notifications 
    $this->db->where ('user_id', $current_user_id) 
    $notifications = $this->db->get ('user_id'); 
    foreach ($notifications as $notification) 
    { 
         // Display the notification as needed 
         // Optionally delete the notification as it is displayed if it is a "one off" alert only 
    } 
    
    +0

    メイトにお返事ありがとうございます。私がJeffreyの答えを出したのは、彼が最初に投稿したものですが、私はあなたに投票するように応答する時間をとっていただき、ありがとうございます。 –

    4

    ジェフリーの回答を拡張:

    id | from_user | to_user | notification | seen | timestamp 
    -   -   -   -   -   - 
    

    タイムスタンプは、あなたがどの瞬間に特定の通知が発生して識別するのに役立ちます。 timeago.jsまたはLivestamp.js

    また、通知のタイムラインを作成するのに役立ち、通知のメンテナンスも簡単になります。

    関連する問題