- ベストアンサー
perl BBS(掲示板)で10件ずつ表示する
perlで掲示板を作製しているのですが、 一度に表示される記事数を10件ずつにしたいと思っています。 その後、nextボタンを押すことで10件ずつ過去の記事にさかのぼっていくようにしたいと思っています。 最初に記事を開いたときに、最新の記事から10件取り出すようにすることはなんとなく分かるのですが、 その後、nextボタンによりさかのぼっていく仕組みが いまいちイメージできなくて困っております。 prevボタンを押すと最新のほうに10件進むようにしたいと思っています。 参考になるURLでもかまいませんので、 アドバイスお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ここではリンク出来ないので、ロジックだけす。 一般的に掲示板の1件は1個のファイルとして扱っており、ファイル名は数字でナンバリングされています。 また、古い物は数値が小さく、新しい物は数値が大きいとすると、 最新の記事が仮に123456だったとします。 表示される記事は123456~123447の10件です。 次のページは123446~123437ですね。 法則が見えてきませんか? prevで10件進むのであれば、現在表示している最初の記事の番号に10を足した記事から10件表示。 nextで10件戻るのであれば、現在表示している最初の記事の番号から10をひいた記事から10件表示。
その他の回答 (1)
- ngsvx
- ベストアンサー率49% (157/315)
どこから表示し始めるかをCGIに教えてあげればいいですね。 CGI側がそういうHTMLを作成します。 表示し始める位置は、ボタンを押したときのアクションにパラメータをつけます。 現在、NO50からNO41までの10件を表示してあるとすると、 次ボタンは、 <form method="get" action="~/bbs.cgi?msgno=40"> (NO40から表示) 前ボタンは、 <form method="get" action="~/bbs.cgi?msgno=60"> (NO60から表示) のようになります。(?以降がポイント) これを、CGIで出力します。 一方CGI側では、 msgnoパラメータの値によって、ページを作成します。 (msgnoパラメータが無い場合は、先頭から) 最初と最後のページでは、終端の処理をする注意が必要です。 *CGIでURLの?以降を取得する方法はわかりますよね?
お礼
ありがとうございます。 お礼が遅くなりまして申し訳ございません。 msgnoの算出方法を教えていただきたいのですが、 どのようにして算出させればいいのでしょうか? 実は一記事に対して一つのファイルという仕組みではなく、一つのファイルに記事を貯めていくという仕組みのbbsを作製しておりまして、 改行コードが一つの記事の区切りという仕組みになっております。 もしご存知でしたら、参考になるCGI掲示板のスクリプトのURLを教えてくださらないでしょうか。 そちらで実際に解析しながら勉強しようと思います。 宜しくお願い致します。 そもそも記事事態は別にファイルを作成していくほうがいいのかなとも思いつつ、
補足
すみません。語尾がおかしくなってしまいました。 一記事に対して一ファイルのほうがいいのかなという心配が少しあります。 宜しくお願い致します。
お礼
ありがとうございます。 遅くなりまして申し訳ございません。 掲示板の一件を一個のファイルではなく、 一つのファイルに、一件の記事を改行コードが出てくるまでを一件としてdatファイルを作成していく仕組みにしているのですが、 これだと後々まずくなってしまうでしょうか。 各行の先頭に、記事番号が表示される仕組みです。 もしご存知でしたら、参考になるCGIスクリプトのURL等、教えていただけないでしょうか。 そちらで解析を頑張ってしてみたいと思っております。 宜しくお願い致します。
補足
連続投稿になってしまいますが、 なんとか自分で新たな疑問点を見つけることができましたので、 別途投稿したいと思います。 ありがとうございました。