プロが教える店舗&オフィスのセキュリティ対策術

掲示板などデータが次々と増えていくもので例えば50件超えたらページが変わるものってありますよね。
あれはどのようにして作成するのでしょうか?
概念だけでも教えてください。

A 回答 (2件)

こんにちは。



よく見かけるCGIでも、いざ自分で作るとなると「あれ?どうなってんだ?」というものが結構ありますよね。

早速本題へ。
ログのn番目から指定件数(50件)だけ抜き出して表示する基本機能を作ります。
ログが指定件数以上ある場合は「次ページへ」ボタンが現われるように条件分岐しておき、このボタンで「次はn番目から表示してくださーい」という「n番目」を渡してやります。

<1ページ目>
・n=0で、ログの先頭から50件(0~49)表示。
・「次のページへ」ボタンで次のページの先頭nである「50」を渡してやる。

<2ページ目>
・前ページから2ページ目の先頭n=50が送られてきた。
・n=50で、ログの51番目から50件(50~99)表示。

以降、同じ。
「前ページへ」ボタンも同じ原理です。

ん~、我ながら教え下手だ(笑)。

この回答への補足

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";

}

補足日時:2003/03/07 11:29
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>よく見かける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]と出てきたところに貼るリンクの方法がわかりません。
どのようにしたらうまくいくでしょうか?

お礼日時:2003/03/07 11:22

ログファイルから特定の件数のみ取得・表示し、次のページへのリンクで次は何件目から取得するかの情報を送り、そのページでは受け渡された件数からデータを取得し表示しています。


ログファイルから取得する位置を変えて決められた件数を取得しているのです。
位置に特定については指定件数までスキップするか、ファイル位置をそのものを指定します。

具体的にはそのような掲示板がフリーCGIでありますからそちらを参考にしてください。
http://www.kent-web.com/bbs/petit.html?

参考URL:http://www.kent-web.com/bbs/petit.html?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはりそういうやり方でいいんですよね。
ではこれでちょっと試しに作成してみます。

ありがとうございました。

お礼日時:2003/03/07 11:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!