-1

Facebookの友達の誕生日を現在の日付から来年の今日まで取得したい. todate は、現在から 364 日後の日付 (m/d) です。この目的のために、最初の fql は 1 月から現在の日付までのデータを取得するためのものであり、2 つ目は現在の日付から 12 月 31 日までのデータを取得するためのものです。次の 11 か月と 29 日の誕生日にページネーションを適用したいと考えています。次のクエリは機能しており、データをフェッチしています。どんな提案でも大歓迎です。

$fromDate = date('m/d');
$past_birthdays = $facebook->api(array(
                'method' => 'fql.query',
                'query' => "SELECT uid, name, birthday, birthday_date,substr(birthday_date,0,3) FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND birthday_date<'$toDate' AND birthday_date>='01/01' order by birthday_date",
                'access_token' => $accessToken
                    ));
if ($toDate > $fromDate) {
            $condition = " AND birthday_date<'$toDate'";
        } else {
            $condition = "";
        }

$upcoming_birthdays = $facebook->api(array(
                'method' => 'fql.query',
                'query' => "SELECT uid, name, birthday, birthday_date,substr(birthday_date,0,3) FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND birthday_date>='$fromDate' $condition order by birthday_date",
                'access_token' => $accessToken
                    ));
4

1 に答える 1

1

あなたの場合のように、クエリで制限を指定した場合、facebook api エクスプローラーでチェックした場合、その出力は一貫していません。問題を解決する最善の方法は、誕生日リスト全体を配列にロードし、スロットに表示することです。

$fromDate = date('m/d');
        $past_birthdays = "";
        $upcoming_birthdays = $facebook->api(array(
            'method' => 'fql.query',
            'query' => "SELECT uid, name, birthday, birthday_date, substr(birthday_date, 0,3) from user where uid in (select uid2 from friend where uid1=me()) and birthday_date >='$fromDate' order by birthday_date Limit 0,500",
            'access_token' => $accessToken
                ));
        $no = count($upcoming_birthdays); //exit;
        if ($no < 500) {
            $Limit2 = 500 - $no;
            $past_birthdays = $facebook->api(array(
                'method' => 'fql.query',
                'query' => "SELECT uid, name, birthday, birthday_date, substr(birthday_date, 0,3) from user where uid in (select uid2 from friend where uid1=me()) and birthday_date >='01/01' and birthday_date <= '$fromDate' order by birthday_date Limit 0,$Limit2",
                'access_token' => $accessToken
                    ));
            //echo count($past_birthdays);exit;
            $upcoming_birthdays = array_merge($upcoming_birthdays, $past_birthdays);

通年取得しているため、todate を取得する必要はありません。

于 2012-11-07T14:19:01.563 に答える