68user's page 掲示板

Prev< No. 1696> Next  [最新発言に戻る] [過去ログ一覧]
No. 1696 # 68user 2001/02/04 (日) 01:09:16
>>1695 けんす
B-Cus 1999/01/27(水) 03:02:50 の形だと、
    発言が 40 件あるときに start=30 とすると「次の10件」が
    表示されない (41件目かどうかで判定しているから)
という問題点があるので、ちょっと構成を変えて、
    $start=1;
    $count=1;
    $next_page_exist = 0; # 次ページが存在するか
    $messages_per_page = 10; # 1ページ 10件ずつ表示
    if ( $ENV{QUREY_STRING} =~ m/start=(\d+)/ ){
        $start = $1;
    }
    open(IN,"data.txt");
    while (<IN>){
        if ( $count >= $start ){
            ($name,$content) = split(/,/,$_);
            print "名前:$name 内容:$content<br>\n";
            if ( $count == $start+$messages_per_page ){
                $next_page_exist = 1;
                last;
            }
        }
        $count++;
    }
    if ( $start != 1 ){ # 1件目から表示しているときは「前のxx件」を出さない
        printf qq(<a href="hoge.cgi?start=%d">前の$messages_per_page件</a>),
            $start-$messages_per_page ? ;
    }
    if ( $next_page_exist == 1 ){ # 次ページが存在しない場合は「次のxx件」を出さない
        printf qq(<a href="hoge.cgi?start=%d">次の$messages_per_page件</a>),
            $start+$messages_per_page;
    }
    printf "以上 %d から %d 番目の発言です。\n", $start, $count-1;
という感じになります。動かしていないのでバグがあるやも
しれません。

あと、start=7 のときに「前の10件」が hoge.cgi?start=-3 と
なりますが、これは宿題ということで。

Prev< No. 1696> Next  [最新発言に戻る] [過去ログ一覧]