0

eventbrite.comのようなイベント一覧 Web サイトを作成しています。イベントを作成できる主催者と、イベントに登録できるユーザーがいます。

ユーザーは Facebook 経由でシステムにログインする必要があります。この場合、facebook_id を保存できます。

私の質問は、特定のユーザーのフレンド リスト (イベントに参加しているフレンド) を取得して、イベントの下に表示するにはどうすればよいですか?

実際に私はこれについてのアイデアを持っています:

解決策 I
ログインしたユーザーがイベントに参加するとき、イベント ID で彼の facebook_id を保存できます。

イベント参加者テーブル
facebook_id | ---- イベント _id
42343453424 | ---- 08
34534534544 | ---- 08
23424243224 | ---- 10

別のユーザーがログインすると、その友人の facebook_ids を取得して、イベント参加者テーブルとの照合を試みることができます。

例:
user_friend_list = [ 42343453424 、 23424243224 、 4345345345 、 245345433 、...など ]

user_friend_list 配列 (42343453424) から最初のユーザーを取得し、イベント参加者テーブル、2 番目のユーザー (23424243224)、3 番目のユーザーなどを検索する必要があります。

このメソッドは、多くのループとクエリを実行する必要があります。これにより、サイトに大きな遅延が発生します。

誰でもこれを行うためのより良い解決策を提案してもらえますか?

前もって感謝します!

-PS

  1. eventbrite.com と eventful.com には、この作業を行う Facebook アプリがあります。この作業を行うための Facebook ブック アプリの作成方法。

  2. ホームページに複数のイベントがあり、ユーザーがログインすると各イベントの下に出席者リストを表示したいのですが、スムーズに行うことはできますか?

4

1 に答える 1

0

個々のデータベース ヒットをすべて実行する代わりに、イベントのすべての参加者を 1 つのクエリに戻し、それらを配列に保存してみませんか。次に、すべてのユーザーの友達を取得し、それらを別の配列に保存します。最後に、出席者のリストをループし、in_array メソッドを使用して、現在の出席者がフレンド配列に含まれているかどうかを確認します。次に、これらをすべて一致する友人である 3 番目の配列に格納できます。

例えば

 $matching = array();
 $attending = array(); // This is populated from your database
 $friends = array(); // This would be populated from their facebook friendlist

 $foreach($attending as $attendee){
       if(in_array($attendee, $friends)){
            // This attendee is present in their friends list so add them to matching
            $matching[] = $attendee;
       }
 }

 //Loop through matching to show all the friends who are attending.
于 2012-08-17T06:33:57.047 に答える