0

データベースにクエリを実行し、データを表示しています。ユーザーのプロフィール写真を表示するために使用するタイムスタンプと Facebook ID があります (Facebook グラフを使用)。ただし、これは FB グラフの質問というよりは PHP/Loop の質問です。これが私が取り組んでいるコードの一部です:

$sql = "SELECT * FROM fb_id ORDER BY timestamp DESC";
$result = $mysqli->query($sql);

echo "<h1>".$lastone_month." ".$year_lastone."</h1>";
while($row = mysqli_fetch_array($result)){
$fb_id = $row['fb_id'];
$timestamp = date_parse($row['timestamp']);
$month = $timestamp['month'];
$year = $timestamp['year'];                                     
echo "<a href='http://www.facebook.com/".$fb_id."' target='_blank'><img src='http://graph.facebook.com/".$fb_id."/picture/' /></a>";
}

本質的に何が起こるかというと、私は最新の月をエコーし​​ているということです (これは、この前の少しのコードにあります)。$lastone_month は数字です (サインアップした最新のユーザーの月の数字です)。1 月だとすると、h1 は 1/2013 を表示します。次に、while ループでデータベースをループし、ユーザーのプロフィール写真をタイムスタンプ順にエコーします。私がやりたいことは、$month が $last_month と等しくない行に到達するまで while ループを実行することです。

その時点で $month 値がまだ宣言されていないため、while ループで "&& $month==$lastone_month を使用できません。エコー行の周りで if ステートメントを試しましたが、1 つのエントリが無限に表示されました。 while ループの前に行を宣言し、そこで $month と $year も宣言してからループを実行しようとしましたが、それも機能しませんでした. 本当に簡単な解決策だと思いますが、それが何であるかわかりません. どんな助けでも大歓迎です. どうもありがとうございました!

4

2 に答える 2

1

を使用breakして、いつでもループを終了できます。

while ($row = mysqli_fetch_array ($result))
{
  ...
  $month = $timestamp ['month'];
  if ($month != $lastone_month) break;
  ...
}

ただし、より効率的なのはWHERE、SQL クエリで使用することです。

$sql = "SELECT * FROM fb_id WHERE MONTH(timestamp)='$lastone_month' ORDER BY timestamp DESC";
于 2013-02-20T09:16:33.617 に答える
0
// build here timestamp which is your limit and name it $limit
$sql = 'SELECT * FROM fb_id WHERE timestamp < "$limit" ORDER BY timestamp DESC';

そんな感じ

于 2013-02-20T09:16:55.070 に答える