2012-03-13 27 views
1

私はデータベース内からメッセージを出力するスクリプトを持っています。foreachループPHPの中断

各メッセージは別のユーザーによって書き込まれます。私が望む何

は、メッセージを表示することができ、メッセージ作成者と友達であるユーザーのみです。

私が持っているスクリプトは次のとおりです。

foreach($updatesarray as $data) 
{ 
$qu=mysql_query("SELECT frid FROM friends WHERE usid='$uid'")or die(mysql_error()); 
$dataq=array(); 
$qurow=mysql_fetch_array($qu); 
$dataq[]=$qurow['frid']; 
foreach($dataq as $value){ 
    if($value!=$data['uid_fk']) 
    continue; 
} 

/Continues the output of the message 

最初のforeachは、MySQLのクエリ配列からデータを取ります。 そのforeach内で、別のmysqlクエリを実行して、現在ログインしているユーザーの友人のリストを特定します。私は結果を配列に入れ、新しいforeachを作成します。 のユーザーであると判断されたループがあれば、それは継続されます...しかし、私はどのようにしたいのですか? 2番目のforeachを続行するのではなく、メッセージの出力全体をスキップする必要があります。

変数$ data ['uid_fk']は、データベースに格納されているメッセージ作成者です。

データベースクエリ:あなたcontinueこのフラグが設定されている場合は、フラグを設定し

if($viewtype=="friends"){ 
     $viewquery="M.uid_fk=U.uid"; 
     $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created,  U.username, U.firstname, U.middlename, U.surname, M.uploads FROM messages M, users U WHERE  $viewquery $morequery order by M.msg_id desc limit " .$this->perpage) or  die(mysql_error()); 

     } 
+0

PHPでフィルタリングする必要があるすべての更新ではなく、友人の更新のみを返すように、あなたのクエリですでに解決しておくことをお勧めします。 – hakre

+2

私はこれをまっすぐにしましょう。第2回目のループを脱出する必要がありますか?それを中断する必要がある場合は、キーワード 'break'を使用してください。私はおしゃべらにしようとしていない、私はそれを読んでミスかもしれない、より良い質問を指定してください! – Michael

+0

申し訳ありませんが、マイケルは、そのように壊れていないので、私は現在のループをスキップし、残りのforeachループを続行する必要があります。 hakre、私はクエリーでこれをやり遂げる方法がわからないので、私のクエリーコードを1分で追加します。私は試しました。 –

答えて

3

クエリではメッセージとフレンドの表に参加しなければならず、あるショットでは両方があります。

+0

私は以前これをやろうとしていましたが、友人のテーブルから配列を取り出してメッセージクエリに使用する方法を理解できませんでした。たとえば、ユーザーに1000人の友達がいる場合はどうなりますか? –

+0

ありがとう、私はこれを把握することができ、それは働いています。 –

1

- >出力しないメッセージを行います。

+0

フラグを設定したときの意味を完全にはわかりません。あなたはこれに関するもう少しアドバイスを提供できますか?ありがとうございます –

+0

後でチェックする値に変数を設定してください。どのPHPブックをお使いですか?それを聞いて申し訳ありません: - –

+0

@LightnessRacesinOrbit私は私の人生の中でPHPの本を使用していない、私は最後の8年間TelfordComputer-DoctorLtd @ –

1

ことはあなたの最初のループをスキップするために、これを試してみてください:

continue 2;

ネストされたループの続行されます。この2パラメータを制御します。

+0

yikes ..私はPHPで持っていたgotoコントロールの量を認識していませんでした。 – Michael

+0

私はこれを試しましたが、ユーザ自身が作成したものを含め、多くのメッセージが欠落しています。 –

+0

@マイケル:それはなぜですか?この機能は、http://php.net/manual/en/control-structures.continue.php –