質問 |
||
| 質問者: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 |
|
| この回答へのお礼 | 教えて頂いた通りやってみたら、問題なく完成しました。ありがとうございました。 |