ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:skypearl レコード取得件数の表示位置について
困り度:
  • すぐに回答を!
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 件見つかりました!";
}
--------------少略--------------------
質問投稿日時:08/03/13 18:16
質問番号:3859706
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答10pt

回答者:lx_lucifer_xl -------------------------------------------------------------
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)
はデータ無しの場合は回らないので問題ないかと思います。
種類:回答
どんな人:一般人
自信:参考意見
回答日時:08/03/14 14:37
回答番号:No.2
この回答へのお礼ありがとうございました。無事、完成させることができました。

回答

良回答20pt

回答者:kumoz 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;
}
種類:回答
どんな人:一般人
自信:参考意見
回答日時:08/03/14 00:12
回答番号:No.1
この回答へのお礼教えて頂いた通りやってみたら、問題なく完成しました。ありがとうございました。
 
最新から表示回答順に表示良回答のみ表示