CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。
▼スレッド
│
└◇1626:ログ表示を 50件づつ [Sig(仮)] 05/01 02:56
└◇1630:Re:ログ表示を 50件づつ [moon★] 05/03
└◇1631:Re[2]:ログ表示を 50件づつ [Sig2(仮] 05/03 <
お世話になっております。スレッド一覧
まずは、moon様 お返事有難う御座いました。
さて、勉強用掲示板CGIの改造も ほぼ考えどおりに
出来上がりつつありますが、あと一歩。
『100件のログ表示を 50件づつ表示する方法』
を教えてください。
open(IN, "$logfile");
<IN>;
while(<IN>) {
($no,$com,$name・・・
ここらへんで ごにょごにょするという検討はついたのですが、
for文やら継続条件やらがわかりません。
行の先頭に番号をつけたので、これに条件をひっかける方法
でよいのでしょうか?
お手数ですが、ご指導宜しくお願いします。
ごめんなさい。見落としてました(^^;スレッド一覧
> 『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異常になったら処理を終わらせると言うことです。
あとは、配列に入れて処理するとか。
別の機能でページ繰り(次のページとか前のページとか)があると尚いいかもしれない。(多分配列に入れてやらないと駄目だとおもう)
moon★様スレッド一覧
書き込みは励みになりました。
そして解説ありがとうございます。
>>番号のつけ方はわかりませんが
i-mode用を真似てログの一番上に置きました。
掲示板にソースを置きます。
>>別の機能でページ繰り(次のページとか前のページとか)
>>があると尚いいかもしれない。
そうですね。
まだまだよく理解できていませんが、
これでもっと頑張ってみます。