- ベストアンサー
phpのwhileで希望通りの動作ができない
- phpのwhile文を使用してデータを表示する際に、「データはありません」という文章が複数回表示されてしまう問題が発生しています。
- while文の中で条件分岐を行っているが、条件に合致するデータが複数ある場合に「データはありません」と表示される。
- データが存在しない場合にのみ「データはありません」と表示するようにするには、条件分岐の条件に誤りがある可能性がある。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>while($test = mysql_fetch_array($sql, MYSQL_ASSOC)){ > >$name = $test[name]; このwhileループ内で変化するのは、$test(配列)と$name($test['name'])だけですよね?$cntは何も変化しませんが・・・ >whileで繰り返した結果、 というのであれば、 $cnt = 0; // 件数カウンタを初期化 while($test = mysql_fetch_array($sql, MYSQL_ASSOC)){ $name = $test['name']; // nameは引用符で括ること! if (empty($name)) { continue; } // 空文字列は読み飛ばす // $nameを表示する部分は見当たらなかったけど // 書くならここに $cnt++; // カウンタ加算 } if ($cnt == 0) { print "データはありません<br />"; } でしょう(やむなくmysql関数のまま書きましたが、当然書き替えてくださいね)。 なお、$test['name']を表示する必要がないなら、列nameが空文字列以外という条件(where)のSQL文にして、mysql_num_rowsで結果セットの行数で判断した方が手っ取り早いです。
その他の回答 (1)
- kosukejlampnet
- ベストアンサー率44% (126/282)
公式リファレンスに例示されているのに...。 質問立てる前に、せめてリファレンスぐらいは読みましょう。 少なくともリファレンスを読んでいれば、mysql_fetch_arrayは使いませんよね。 http://php.net/manual/ja/function.mysql-fetch-array.php
補足
アドバイスありがとうございます。 mysql_fetch_arrayを使うべきではないのは「PHP 5.5.0 で非推奨になりました。将来のバージョンで削除される予定です。」ということなのですね。知りませんでした。ありがとうございました。 また、公式リファレンスの例示の方はちょっと分かりませんでした。。。 申し訳ありませんが具体的にはどの部分になるのでしょうか。
お礼
どうもありがとうございます。 お蔭様で無事に動くことができました。 また、「引用符で括ること」や「mysql_num_rowsでの方法」など、他の点にもアドバイスして頂きましてありがとうございました。