質問掲示板

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

新規発言一覧最新記事過去一覧 | 検索HOME

スレッド

└◇1626:
ログ表示を 50件づつ [Sig(仮)] 05/01 02:56

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


1626● ログ表示を 50件づつ[ Sig(仮) ] 2011 05/01 02:56
お世話になっております。
まずは、moon様 お返事有難う御座いました。
さて、勉強用掲示板CGIの改造も ほぼ考えどおりに
出来上がりつつありますが、あと一歩。
『100件のログ表示を 50件づつ表示する方法』
を教えてください。

    open(IN, "$logfile");
<IN>;
    while(<IN>) {
        ($no,$com,$name・・・

ここらへんで ごにょごにょするという検討はついたのですが、
for文やら継続条件やらがわかりません。
行の先頭に番号をつけたので、これに条件をひっかける方法
でよいのでしょうか?
お手数ですが、ご指導宜しくお願いします。

http://hpcgi3.nifty.com/sig2/mawashimono/bbss.cgi

スレッド一覧


1630● Re:ログ表示を 50件づつ[ moon★ ] 2011 05/03 14:38
ごめんなさい。見落としてました(^^;

> 『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異常になったら処理を終わらせると言うことです。

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

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


1631● Re[2]:ログ表示を 50件づつ[ Sig2(仮) ] 2011 05/03 21:27
moon★様
書き込みは励みになりました。
そして解説ありがとうございます。
>>番号のつけ方はわかりませんが
i-mode用を真似てログの一番上に置きました。
掲示板にソースを置きます。
>>別の機能でページ繰り(次のページとか前のページとか)
>>があると尚いいかもしれない。
そうですね。
まだまだよく理解できていませんが、
これでもっと頑張ってみます。

http://hpcgi3.nifty.com/sig2/mawashimono/bbss.cgi

スレッド一覧

CGIROOM