プロが教えるわが家の防犯対策術!

PerlでSQL(SELECT)文を発行し、一致した件数を表示させたいと考えております。whileのループ中で演算子のカウントを利用しレコード件数を取得している為、検索結果の表示より下で表示件数を表示しています。一般のWeb表記の場合、whileの前で、何件ヒットしたかを表示させるのが常識だと考えます。
どのようにロジックを変更すれば、良いのでしょうか?件数だけの為にwhileを2回回すのも、恥ずかしいですし(^^;

--------------少略--------------------
my @results;
my $count;
while(@results = $sth->fetchrow) {
print @results, "\n<P>";
$count++;
}
if ($sth->rows == 0) {
print "<font color=red>該当するデータはありません</font>";
}else{
print "<font color = red><B> $count 件見つかりました!";
}
--------------少略--------------------

A 回答 (2件)

while の中で表示せずに、別の配列に入れておいて件数の後に表示するようにすればよいと思います。



my @results;
my $count;
my @display;
while(@results = $sth->fetchrow) {
push @display, [@results];
$count++;
}
if ($sth->rows == 0) {
print "<font color=red>該当するデータはありません</font>";
}else{
print "<font color = red><B> $count 件見つかりました!";
print @$_, "\n<P>" foreach @display;
}
    • good
    • 0
この回答へのお礼

教えて頂いた通りやってみたら、問題なく完成しました。ありがとうございました。

お礼日時:2008/03/20 21:35

-------------------------------------------------------------


my @results;
my $count;
if ($sth->rows == 0) {
print "<font color=red>該当するデータはありません</font>";
}else{
print "<font color = red><b>".$sth->rows."件見つかりました!</b></font><br>";
}

while(@results = $sth->fetchrow) {
print @results, "\n<P>";
}
-------------------------------------------------------------

$sth->rows で件数が取得できますので、最初に出力してしまえば問題はなくなるのではないでしょうか。

while(@results = $sth->fetchrow)
はデータ無しの場合は回らないので問題ないかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。無事、完成させることができました。

お礼日時:2008/03/20 21:36

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