0

ツイッターのようなソーシャルツールを作っているのですが、「誰がこのツイッターもツイートしているか」に行き詰まりました。

私のページにはツイッターのリストがあり、各ツイートに対して誰がこれをツイートしたかを表示したいと思います。

MySQL + php + Smarty を使用しています。

コードは次のとおりです: /* ---- php ---- */

// Get twitters that tweeted over 200 times.
$sql = mysql_query("SELECT id, content, user, tweets FROM twitter_list WHERE tweets > '200'");
$twitter_array = array();
while($tweet_row = mysql_fetch_array($sql)){
    array_push($twitter_array, $tweet_row);
    // Get the users who tweeted these twitters.
    $twitter_id = $tweet_row['id'];
    // Find out 5 friends who also tweeted this twitter. twitter_relation stores who tweets what.
    $friends_who_also_tweet = mysql_query("SELECT tid, twitter_id, user_id FROM tweet_relation WHERE twitter_id = '$twitter_id' ORDER BY tid DESC LIMIT 5");
    $friends_who_also_tweet_array = array();
    while($friends_who_also_tweet_row = mysql_fetch_array($friends_also_tweet_array)){
        array_push($friends_who_also_tweet_array, $friends_who_also_tweet_row);
    }
    if($friends_who_also_tweet_array){
        $sm->assign("fwat", $friends_who_also_tweet_array);
    }
}
if($twitter_array){
    $sm->assign("twitter", $twitter_array);
}
$smarty->display('twt.html');

/* ---- HTML: twt.html ---- */

...
{section name=twitter loop=$twitter}
<div class="content">{$twitter[twitter].content}</div>
<div class="who_also_tweet">
  {section name=who loop=$fwat}
  <div class="i_also_tweet">{$fwat[who].user_id}</div>
  {/section}
</div>
{/section}

Twitter の配列を取得し、各 Twitter について、それをツイートした 5 人のユーザーを取得したいと考えています。しかし、最初の twitter のユーザーしか表示されません。while() が間違っているのではないかと思いますが、それを見つけることができません。誰か手を貸してくれませんか?どうもありがとう。

4

1 に答える 1

1
$twitter_array = array();

それから:

if($twitter_array){
    $sm->assign("twitter", $twitter_array);
}

その配列に何も追加していません。私はあなたがここでそれをするつもりであると仮定しています($tweet_array宣言されていないので):

array_push($tweet_array, $tweet_row);

実際、この変数も割り当てられ、参照されることはありません。

$friends_who_also_tweet

あなたの変数の命名は本当に紛らわしいです、そして私はそれがあなたの問題に貢献しているかもしれないと思います。

編集:また、なぜ最初のWhileループのすべての反復でこれを割り当てるのですか?以前の値を上書きするだけです。

if($friends_who_also_tweet_array){
        $sm->assign("fwat", $friends_who_also_tweet_array);
    }
于 2013-01-10T16:50:00.087 に答える