- 締切済み
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が一つの場合上手くいきましたが、二つの場合上記のようになります。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
大体、最初のmysql_fetch_array()で$stには 最終行の値が設定されてるんだから、 二回目のmysql_fetch_array()をしても$stは その時点では不動。 やりたいなら、$stをセットしている部分で 最初から$row['st']に対してif()ロジックを 入れればいいだけの話でしょう。 2つのクエリカーソルを使って処理する意味が わかりません。
- hitomura
- ベストアンサー率48% (325/664)
これだけではどう直せばいいのか分かりません。 $resと$res2にどういう値を入れているか書いてください。 今のところいえるのは、「2番目のwhileでは、$stにはあなたが思っている『フェッチ中の人の勤怠データ』ではなく『1番目でフェッチを繰り返して取り出した最後の勤怠データ』が入っている」だけです。
- yambejp
- ベストアンサー率51% (3827/7415)
ifで変数の整合性をとるなら型まで意識してやったほうがよいです >if(!$st==""){ if($st!==""){ ですね(文字列を比較するのであればイコールは2つ) そもそも$resと$res2を処理する必要がホントにあるのでしょうか? たいてい一つのSQLで処理できると思いますが・・・
- m-take0220
- ベストアンサー率60% (477/782)
> if(!$st==""){ 等しくないを条件にするなら、!=では? !$st==""と!($st=="")は意味が違うし。