レスが付くと一番上に来るには??
[上に]
[前に]
[次に]
レス太郎
1999/06/18(金) 23:13:30
レスが付くと記事が一番上にくるようにしたいです。
掲示板のトップはindex.shtmlで、
ログファイルをSSIで呼び出すようにしています。
こんなかんじです↓
<!--#include file="5.html"-->
<!--#include file="4.html"-->
<!--#include file="3.html"-->
<!--#include file="2.html"-->
<!--#include file="1.html"-->
たとえば3.htmlにレスが付いた場合、
上に追加書き込みすることで上に持ってくる事はできるんですが、
<!--#include file="3.html"-->
<!--#include file="5.html"-->
<!--#include file="4.html"-->
<!--#include file="3.html"-->
<!--#include file="2.html"-->
このように、3.htmlの表示が2つになってしまいます。
何とかして下の3.htmlのほうの行を消す方法はないでしょうか?
B-Cus
1999/06/19(土) 07:08:02
> 上に追加書き込みすることで上に持ってくる事はできるんですが、
という処理を行うCGIやSSIの中で、先頭に書いたものと同じものが出てきたら
スキップする、というのではダメでしょうか。
あるいは include fileの代わりに
<!--#exec cmd="listup.pl"-->
などとして、その中で適当に順番を変えるとか。
レス太郎
1999/06/19(土) 09:57:25
スキップというのはどの関数を使用すれば良いのでしょうか・・・?
なるべく、読み込みの際には処理を少なくしたいです
お願いします。
B-Cus
1999/06/19(土) 16:13:28
処理を飛ばすようなアルゴリズムを考える、ということです。
そもそも
> 上に追加書き込みすることで上に持ってくる事はできるんですが、
というのは、手動でやろうとしているんですか? もちろんそうじゃなくて
自動処理させるつもりですよね?
方法はいろいろあると思いますが、一例として、最終更新時刻の順に
ファイルをソートして表示する例。
pendir(DIR,"./");
@files = grep(/^\d+\.html$/,readdir(DIR));
foreach (@files){
$table{$_}= (stat("$_"))[9];
}
foreach ( reverse sort {$table{$a}<=>$table{$b}} keys %table){
print "<!--#include file="$_-->\n";
}
レス太郎
1999/06/19(土) 17:40:20
お返事ありがとうございます。
すいません、状況の報告不足でした。
スレッド1つが1つのHTMLファイルになるようにしています。
ログが貯まると困るので、表示するのは20個にしたいです。
それで、レスが付くとレスの処理のときに、
そのHTMLが一番上でinclude fileで呼び出されるように
このように↓書きました。
$datafile = "./log.html";
$tempfile = "temp";
open(TMP,">$tempfile");
print TMP "<\!--\#include file=\"$html\"--\>\n";
open(DATA,$datafile);
@DATA=<DATA>;
for ($i=0; $i<19; $i++) {
print TMP $DATA[$i];
}
close(DATA);
close(TMP);
rename($tempfile,$datafile);
でもこれだと同じスレッドにレスが付き続けると、
<!--#include file="3.html"-->
<!--#include file="3.html"-->
<!--#include file="3.html"-->
<!--#include file="3.html"-->
というように同じHTMLファイルでページが埋まっちゃって困ってるんです・・。
書き込みのときに同じ記述がある場合はそれを消して、
それから上に追加書き込みする方法はないでしょうか・・?
よろしくお願いします。
B-Cus
1999/06/19(土) 18:39:58
for ($i=0; $i<19; $i++) {
if ( "$i.html" eq "$html" ){ next; }
print TMP $DATA[$i];
}
とか。
レス太郎
1999/06/19(土) 19:50:36
これだと、
行とファイル名が一致したときだけスキップするだけと
思うんですが・・・。
B-Cus
1999/06/20(日) 17:50:52
上のスクリプトを見る限り、「$html=書き込みがあったスレッド」と思えたので、
「書き込みがあったスレッドはスキップ」のつもりだったのですが、違うの?
[上に]
[前に]
[次に]