みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

if文が上手くいかない

while($row = mysql_fetch_array($res)){
$st = $row['st'];
}
while($row2 = mysql_fetch_array($res2)){
if(!$st==""){
echo $row2['name'].'<br>出勤<br>';
}else{
echo $row2['name'];
}
}

上記のように$stが有る場合、無い場合を振り分けています。
一方は有る、一方は無い状態で上記を表示した所

タモリ
出勤

つるべ
出勤
と、両方でてしまいます。

タモリ
出勤

つるべ

と片方にしか出ないようにしたいのですが、どうしたらいいでしょうか??
mysql_queryが一つの場合上手くいきましたが、二つの場合上記のようになります。

投稿日時 - 2012-04-16 17:27:16

QNo.7424432

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

大体、最初のmysql_fetch_array()で$stには
最終行の値が設定されてるんだから、
二回目のmysql_fetch_array()をしても$stは
その時点では不動。

やりたいなら、$stをセットしている部分で
最初から$row['st']に対してif()ロジックを
入れればいいだけの話でしょう。

2つのクエリカーソルを使って処理する意味が
わかりません。

投稿日時 - 2012-04-16 22:40:55

ANo.3

これだけではどう直せばいいのか分かりません。
$resと$res2にどういう値を入れているか書いてください。

今のところいえるのは、「2番目のwhileでは、$stにはあなたが思っている『フェッチ中の人の勤怠データ』ではなく『1番目でフェッチを繰り返して取り出した最後の勤怠データ』が入っている」だけです。

投稿日時 - 2012-04-16 17:59:46

ANo.2

ifで変数の整合性をとるなら型まで意識してやったほうがよいです

>if(!$st==""){

if($st!==""){
ですね(文字列を比較するのであればイコールは2つ)

そもそも$resと$res2を処理する必要がホントにあるのでしょうか?
たいてい一つのSQLで処理できると思いますが・・・

投稿日時 - 2012-04-16 17:58:12

ANo.1

> if(!$st==""){

等しくないを条件にするなら、!=では?
!$st==""と!($st=="")は意味が違うし。

投稿日時 - 2012-04-16 17:51:59