2011-04-07 91 views
1

我正在创建自己的应用程序来显示即将到来的朋友的生日。我有权从facebook上获得这个日期,并且在我的网站上显示我的所有朋友的出生日期。我唯一的问题是如何显示ie。前10个即将到来的生日?我使用$ facebook-> api('/ me/friends?limit = 10),但不知道如何对它们进行排序。任何人帮助?我应该尝试对哪些代码进行排序?一些Facebook的API代码或PHP代码。如果PHP那么也许你有一些提示如何做到这一点。干杯!按生日日期排序在Facebook API中我的朋友列表?

+0

按fql中的问题检查此命令:[CLICK HERE](http://forum.developers.facebook.net/viewtopic.php?id=25354) – 2011-04-14 10:13:59

+0

是不是适用于旧的api ?职位是'回合4年前,所以也许他们是不可靠的。但我有一些想法,如果我有什么我会分享在这里通知你。谢谢 – Kamil 2011-04-14 12:27:38

回答

2

我解决问题我自己。非常简单的解决方案...也许太简单但完美。这是我的代码。也许它帮助别人的未来;)

$fql_n = "SELECT uid, name, birthday_date FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND strlen(birthday_date) != 0 ORDER BY birthday_date"; 

    $parame = array(
      'method'  => 'fql.query', 
      'query'  => $fql_n, 
      'callback' => '' 
    ); 
    $fqlResultt = $facebook->api($parame); 
    $ile_dat = 0; 

    $miesiace_slownie = array("01" => "jan", "02" => "feb", "03" => "mar", "04" => "apr", "05" => "may", "06" => "jun", "07" => "jul", "08" => "aug", "09" => "sep", "10" => "oct", "11" => "nov", "12" => "dec"); 
    if($fqlResultt){ 
     foreach($fqlResultt as $ress){ 
      $data = date("m/d"); 
      list($fb_m,$fb_d) = explode("/", $ress['birthday_date']); 
      $fb_date = $fb_m."/".$fb_d; 
      if($data<=$fb_date) { ?> 
       <div class="fb_birthday_fr"> 
        <span class="fb_brt_day"><?php echo $fb_d . ' ' . $miesiace_slownie[$fb_m]; ?></span> 
        <span class="fb_brt_fr"><?php echo $ress['name']; ?></span> 
       </div> 
       <?php 
       $ile_dat++; 
       if($ile_dat == 6) break; 
      } 


     } 
    } 

$ miesiace_slownie是的转换月份的数据从Facebook成当地语言类型数组。

欢呼声和许多感谢^爱沙尔马给予的帮助。啤酒给你;)

+1

+1给我..然后:) – 2011-04-14 20:16:08

+0

@Love Sharma我是stockoverflow中的新成员。这是一个比率?如果是这样,我给+1;) – Kamil 2011-04-15 07:13:45

+0

离开那个...... :)没有概率......你没有足够的积分来做到这一点......:D – 2011-04-15 09:29:05

3

试试这个,使其工作就像你提到的:

$friends = json_decode($facebook->api('/me/friends?fields=birthday')); 
$friends_birth = array(); 
foreach($friends->data as $value){ 
    if(isset($value->birthday->)){ 
    $dt = split("/",$value->birthday); 
    $friends_birth[$value->id] = mktime(0,0,0,$dt[0],$dt[1], date("y")); 
    } 
} 
asort($friends_birth); 
echo print_r($friends_birth); 

这将在生日的朋友明智的排序...现在你可以使用这些数据进行进一步的逻辑

+0

我尝试你的代码。但它显示错误,即“json_decode()期望参数1是字符串”无论是什么意思(我真的不知道)。当我从我的$ facebook-> api(/ me/friends)中删除json_decode()并添加到“friends?limi = 5&fields = birthday”时,它会显示5个随机的人。我认为“随机”,因为他们的生日不是即将到来的。错误在哪里?非常感谢您的帮助,但我需要更多;)等待您的回复。欢呼声“爱沙玛” – Kamil 2011-04-07 14:20:28

+0

删除json_decode后你得到了什么输出...你可以发布它... thanx – 2011-04-07 14:27:01

+0

代码更新了..请再试一次... :)和什么输出给请张贴了。 .. – 2011-04-07 14:40:55