• 締切済み

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が一つの場合上手くいきましたが、二つの場合上記のようになります。

みんなの回答

回答No.4

大体、最初のmysql_fetch_array()で$stには 最終行の値が設定されてるんだから、 二回目のmysql_fetch_array()をしても$stは その時点では不動。 やりたいなら、$stをセットしている部分で 最初から$row['st']に対してif()ロジックを 入れればいいだけの話でしょう。 2つのクエリカーソルを使って処理する意味が わかりません。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.3

これだけではどう直せばいいのか分かりません。 $resと$res2にどういう値を入れているか書いてください。 今のところいえるのは、「2番目のwhileでは、$stにはあなたが思っている『フェッチ中の人の勤怠データ』ではなく『1番目でフェッチを繰り返して取り出した最後の勤怠データ』が入っている」だけです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ifで変数の整合性をとるなら型まで意識してやったほうがよいです >if(!$st==""){ if($st!==""){ ですね(文字列を比較するのであればイコールは2つ) そもそも$resと$res2を処理する必要がホントにあるのでしょうか? たいてい一つのSQLで処理できると思いますが・・・

回答No.1

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