>>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 と なりますが、これは宿題ということで。 |