显示事件参与者:Eventbrite / Eventful实现

时间:2012-08-17 03:35:55

标签: facebook facebook-graph-api eventbrite

我正在创建一个活动列表网站,例如 eventbrite.com 。有组织者可以创建可以注册活动的活动和用户。

用户需要通过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,... etc]

我必须从第一个用户那里获得user_friend_list数组(42343453424)并在事件参与者表和第二个用户(23424243224)以及第三个用户等搜索。

此方法需要运行大量循环和查询。这将导致网站出现大量延迟。

有人可以建议我更好地解决这个问题吗?

提前致谢!

-PS

  1. 在eventbrite.com和eventful.com中,有一个Facebook应用程序可以完成这项工作。如何创建这样的Facebook图书应用程序来完成这项工作。

  2. 如果我的主页上有多个活动,并且我想在用户登录后在每个活动下方显示参展者列表。这可以顺利完成吗?

1 个答案:

答案 0 :(得分:0)

为什么不为1个查询中的事件带回所有与会者并将它们存储在数组中,而不是运行所有这些单独的数据库命中。然后获取所有用户朋友并将其存储在另一个阵列中。最后遍历与会者列表并使用in_array方法检查当前与会者是否在好友数组中。然后你可以将它们存储在第三个数组中,这是所有匹配的朋友

e.g

 $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.