0

さて、私はこれを理解しようとしています。基本的に、各 DIVS にカバー写真を追加することを除いて、すべてうまく機能しています。基本的に、FQL を使用して 2 つのクエリがあり、これが私のコードです。

$query = 
   '{"query1":"SELECT aid, cover_pid, name, description FROM album WHERE owner=$fbowner",
     "query2":"SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #query1)"}';

$fqlResult = $facebook->api(array(
    'method' => 'fql.multiquery',
'queries' => $query));          

$fql = $fqlResult[0]['fql_result_set'];
$covers = $fqlResult[1]['fql_result_set'];

$the_count = count($fql);
$i = 0;
foreach($fql as $value) {
 $album_cover = $value['src'];
 echo "<div class='fb_block'>";
 echo "<a href='" . $url . "?action=list_pics&aid=" . $value['aid'] . "&album_name=" . $value['name'] . "'>";
 echo "<img src='{$covers[$i]['src']}' border='1'>";
 echo "</a>";
 echo "<h3>".$value['name']."</h3>";
 echo "<p>".$value['description']."</p>";
 echo "</div>";
 $i++;
}

これで問題なく動作しますが、これをミックスに入れると、$i = 1 にしない限り、表紙の写真がすべてオフになります。

$i = 0;
foreach($fql as $value) {
if($value['name'] != 'Wall Photos'){
 $album_cover = $value['src'];
 echo "<div class='fb_block'>";
 echo "<a href='" . $url . "?action=list_pics&aid=" . $value['aid'] . "&album_name=" . $value['name'] . "'>";
 echo "<img src='{$covers[$i]['src']}' border='1'>";
 echo "</a>";
 echo "<h3>".$value['name']."</h3>";
 echo "<p>".$value['description']."</p>";
 echo "</div>";
 $i++;
}
}

ミックスに別の foreach を貼り付けると、すべてのカバー写真が取得され、各 div に貼り付けられます。では、アルバム ノードに関連付けられたカバー写真を順番に取得するための最も簡単な解決策は何でしょうか?

前もって感謝します!

4

1 に答える 1

1

私もこれを試しました。これら 2 つのクエリ間でインデックスが一貫しているとは限りません。

動作させるには、最初query2に も返すように変更してからpid、コード内の次の行を置き換えます。

echo "<img src='{$covers[$i]['src']}' border='1'>";

これとともに:

foreach($covers as $cover) {
  if ($value['cover_pid'] === $cover['pid']) {
    echo "<img src='{$cover['src']}' border='1'>";
    break;
  }
 }
于 2012-07-27T01:02:54.097 に答える