質問掲示板

CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。

新規発言一覧最新記事過去一覧 | 検索HOME
No.1630  Re:ログ表示を 50件づつ
発言者: moon★
発言日: 2011 05/03 14:38
発言元: z203.124-45-126.ppp.wakwak.ne.jp
 
ごめんなさい。見落としてました(^^;

> 『100件のログ表示を 50件づつ表示する方法』
> を教えてください。
>
>     open(IN, "$logfile");
> <IN>;
>     while(<IN>) {
>         ($no,$com,$name・・・
>
> ここらへんで ごにょごにょするという検討はついたのですが、
> for文やら継続条件やらがわかりません。
> 行の先頭に番号をつけたので、これに条件をひっかける方法
> でよいのでしょうか?

そこです。
番号のつけ方はわかりませんが、単純なカウントアップだと、LOGがあふれた場合(保存数以上になった場合)、過去のLOGが消されるので、番号で指定するとだんだん表示LOGが減るとかになりかねないので、あまりお勧めはしません。(めんどくさい処理をやればできないことはないと思いますが。最初かの数字〜+50まで表示とか)

一番簡単なのは
# 掲示板の最大LOG保存数(これ以上になると古い順に削除)
$max = "30";
を50とかにしてしまうことですが、それは置いておいて。

open(IN, "$logfile");
while (<IN>) {
は、読み込んだ $logfile をすべて表示する(繰り返す)と言う意味なので、LOGが全部表示されます。

で、いくつかやり方はありますが、まずは

$i = 0;
while (<IN>) {
$i++;
if ($i>50) { last; }

と入れる。
要するに、$iを一ずつ足して、50異常になったら処理を終わらせると言うことです。

あとは、配列に入れて処理するとか。

別の機能でページ繰り(次のページとか前のページとか)があると尚いいかもしれない。(多分配列に入れてやらないと駄目だとおもう)

▼関連発言

1626:ログ表示を 50件づつ [Sig(仮)] 05/01
 └1630:Re:ログ表示を 50件づつ [moon★] 05/03
  └1631:Re[2]:ログ表示を 50件づつ [Sig2(仮] 05/03 <

Pass 保存

CGIROOM