0

Я сделал страницу, где вы можете увидеть событие из публичной страницыFacebook События Порядок отображения

РНР код

<?php 
require 'src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => 'ID', 
    'secret' => 'SECRET', 
    'cookie' => true, 
)); 
try{ 
    $events=$facebook->api('/PAGE/events?access_token=TOKEN'); 
}catch (FacebookApiException $e){ 
    error_log($e); 
} 
foreach ($events["data"] as $event){ 
    // Time 
    $startTime=strtotime($event["start_time"]); 
     // Only Upcoming events 
     if ((time()-$startTime)<=60*60*24*1 || $startTime>time()){ 

       echo '<li><a href="#" id="'.$event["id"].'" class="event_link"> 
       <img class="ui-li-thumb" src="https://graph.facebook.com/'.$event["id"].'/picture?type=small" width="70px;" height="100%" /> 
       <h3 class="ui-li-heading">'.$event['name'].'</h3> 
       </a></li>'; 
      } 
     } 
?> 

Это работает нормально только я получаю самое близкое событие последней в списке

Как я могу изменить порядок вывода? (Если это возможно).

ответ

1

Вы должны будете использовать fql для этого. FQL - Event

Так что с в запросе можно использовать, ORDER BY, сортировать в WRT порядке какой-либо параметр

Для например:

выберите Ид от события, где создатель = PAGE_ID и Ид в (выберите EID из event_member где UID = PAGE_ID) ORDER BY DESC start_time

+0

Возможно, вы получите более подробную информацию? – Froxz

+0

как в чем? Запросы fql аналогичны тем, которые вы используете –

1

Вы можете использовать usort:

//Sorts by name. Switch 'name' for other sorts. 
//Switch 1 and -1 to reverse the sort. 
usort($events["data"],function($a,$b){ 
    if ($a['name'] == $b['name']) { 
     return 0; 
    } 
    return ($a['name'] < $b['name']) ? -1 : 1; 
}); 
1
<?php 
require 'src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => 'ID', 
    'secret' => 'SECRET', 
    'cookie' => true, 
)); 
$fql = "SELECT 
      name, pic, start_time 
     FROM 
      event 
     WHERE 
      eid IN (SELECT eid FROM event_member WHERE uid = PAGE_ID) 
     AND 
      start_time >= now() 
     ORDER BY 
      start_time asc"; 

$param = array(
    'method' => 'fql.query', 
    'query'  => $fql, 
    'callback' => '' 
); 

$fqlResult = $facebook->api($param); 
foreach($fqlResult as $keys => $values){ 

    echo '<li><a href="#" id="'.$values["id"].'" class="event_link"> 
       <img class="ui-li-thumb" src="'.$values['pic'].'" width="70px;" height="100%" /> 
       <h3 class="ui-li-heading">'.$values['name'].'</h3> 
       </a></li>'; 

} 
?> 

РЕШИТЬ!

Смежные вопросы