dポイントプレゼントキャンペーン実施中!

以下のようにしてみたのですが「データはありません」という文章が何度も(何行も)表示されてしまいました。

while($test = mysql_fetch_array($sql, MYSQL_ASSOC)){

$name = $test[name];

if($cnt > 0){
echo "データはありません";
echo '<br>';
}
elseif(empty($name)){
echo "データはありません";
echo '<br>';
}
else{
$name = $name.'<br>';
}

}

whileで繰り返した結果、すべての$nameが「$cnt > 0」か「empty」の場合だけ、「データはありません」と一回だけ表示したいのですが、どのようにしたらいいでしょうか?

A 回答 (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で結果セットの行数で判断した方が手っ取り早いです。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
お蔭様で無事に動くことができました。

また、「引用符で括ること」や「mysql_num_rowsでの方法」など、他の点にもアドバイスして頂きましてありがとうございました。

お礼日時:2012/12/23 23:36

公式リファレンスに例示されているのに...。


質問立てる前に、せめてリファレンスぐらいは読みましょう。
少なくともリファレンスを読んでいれば、mysql_fetch_arrayは使いませんよね。

http://php.net/manual/ja/function.mysql-fetch-ar …

この回答への補足

アドバイスありがとうございます。

mysql_fetch_arrayを使うべきではないのは「PHP 5.5.0 で非推奨になりました。将来のバージョンで削除される予定です。」ということなのですね。知りませんでした。ありがとうございました。

また、公式リファレンスの例示の方はちょっと分かりませんでした。。。
申し訳ありませんが具体的にはどの部分になるのでしょうか。

補足日時:2012/12/23 19:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!