- ベストアンサー
cgi(perl)で掲示板などを作成、ページを分割
掲示板などデータが次々と増えていくもので例えば50件超えたらページが変わるものってありますよね。 あれはどのようにして作成するのでしょうか? 概念だけでも教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんにちは。 よく見かけるCGIでも、いざ自分で作るとなると「あれ?どうなってんだ?」というものが結構ありますよね。 早速本題へ。 ログのn番目から指定件数(50件)だけ抜き出して表示する基本機能を作ります。 ログが指定件数以上ある場合は「次ページへ」ボタンが現われるように条件分岐しておき、このボタンで「次はn番目から表示してくださーい」という「n番目」を渡してやります。 <1ページ目> ・n=0で、ログの先頭から50件(0~49)表示。 ・「次のページへ」ボタンで次のページの先頭nである「50」を渡してやる。 <2ページ目> ・前ページから2ページ目の先頭n=50が送られてきた。 ・n=50で、ログの51番目から50件(50~99)表示。 以降、同じ。 「前ページへ」ボタンも同じ原理です。 ん~、我ながら教え下手だ(笑)。
その他の回答 (1)
- wolfwood
- ベストアンサー率50% (199/398)
ログファイルから特定の件数のみ取得・表示し、次のページへのリンクで次は何件目から取得するかの情報を送り、そのページでは受け渡された件数からデータを取得し表示しています。 ログファイルから取得する位置を変えて決められた件数を取得しているのです。 位置に特定については指定件数までスキップするか、ファイル位置をそのものを指定します。 具体的にはそのような掲示板がフリーCGIでありますからそちらを参考にしてください。 http://www.kent-web.com/bbs/petit.html?
お礼
回答ありがとうございます。 やはりそういうやり方でいいんですよね。 ではこれでちょっと試しに作成してみます。 ありがとうございました。
お礼
回答ありがとうございます。 >よく見かけるCGIでも、いざ自分で作るとなると「あれ?どうなってんだ?」というものが結構ありますよね。 そうです、そうなんですよ! 早速適当なログファイルを作成し、そこから5件ずつ取り出すようにかいてみました。 #---------- open (FILE,"page.log"); flock(FILE,2); @pages = <FILE>; flock(FILE,8); close FILE; $gyou1 = @pages; if($gyou1 > 5){ $gyou2 = int($gyou1/5)+1; } else { $gyou2 = 1; } for ($i=0;$i<5;$i++){ @log = split(/&/,$pages[$i]); foreach(@log){ ($key,$value) = split(/=/,$_); $FORM{$key} = $value; } print "$FORM{'TITLE'}<BR>\n"; }#forの終了 print "<BR><BR><BR>\n"; if ($gyou2 <=> 1){ for($r=2;$r<$gyou2+1;$r++){ print "[$r]\n"; }#for }#if #---------- 表示はうまくいきました。 ですが、[2][3]と出てきたところに貼るリンクの方法がわかりません。 どのようにしたらうまくいくでしょうか?
補足
page_search.cgiを作成し、 以下のようにしてみましたがダメでした。 ※@FILESはログファイルを開いたもの。 ($NOkey,$NO) = split(/=/,$buffer); for ($i=5;$i<5*$NO;$i++){ @log = split(/&/,$FILES[$i]); foreach(@log){ ($key,$value)=split(/&/,$_); $FORM{$key} = $value; } print "$FORM{'TITLE'}<BR>\n"; }