重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

日記CGIをちょっと改造してイベント告知CGIとして利用したいと考えています。配布サイトに掲示板などのサポートが無かったのでこちらで質問させてください。
元となるCGIはOlive Designさんの「Simple Olive Diary2」です。
http://www.olive-design.com/~cgi/simple_diary2.h …
日記の場合、新しいものが一番上に来ますが、イベント告知の場合、先に書き込んだもの(今あっているもの)が一番上のほうが良いですよね。
で、それをどうにかしようと少ない知識を絞って考えたのですが、うまくいきません。

表示する方ではソートしている感じではないので、ログを逆順に保存しようかと考えました。
サブルーチン「regist」の下から3行目
unshift (@log,"$newdata");

push (@log,"$newdata");
としてみましたが、変化無しです。
他にも何か変える必要があるのでしょうか?

宜しくお願いします。

A 回答 (2件)

表示ロジックで小細工するなら、



while ($rt=<IN>){
の箇所を
@wk=<IN>;
for $rt (reverse(@wk)){

に変えてください。


記録ルーチンで小細工するなら、

変更された箇所の少し上にある最大記録数を超えたログの自動削除も
直さないとダメでしょうね。
従来が、先頭側に新、後方に旧データを保存する関係で、整理の対象を
最大記録件数を超えた後ろ全てとしているので。
(全部のロジックを読んでないので、他にもあるかも・・です)
    • good
    • 0
この回答へのお礼

ありがとうございます。表示ロジックを細工する方でやってみましたが、ばっちり出来ました。

お礼日時:2005/03/23 10:14

似たような改造をするときにreverse関数というものを使いました。


お使いのCGIの文が解読できるスキルがないので自分の使ったのをそのまま書きますと、

open(DAT,"<bbs.log");
@alldat=<DAT>;
@reversedat=(reverse(@alldat));

みたいな感じになっています。

この回答への補足

返答ありがとうございます。これは、どこで利用したら良いのでしょうか?
表示部分?それとも書き込み部分?
書き込みだと、書き込むたびに逆になってしまうから意味が無いですよね?(この考えあってます?)

補足日時:2005/03/22 19:51
    • good
    • 0
この回答へのお礼

再度書き込みします。
とりあえず、表示部分に仕込んでみました。
open(IN,"$logfile") ;
@alldat=<IN>;
@reversedat=(reverse(@alldat));
#while ($rt=<@reversedat>){

こうすると、多分なのですが、半角空白でログを区切ってしまっているようで、何も表示しない行(記録)がいくつも出てきてしまいます。
何か解決方法はありますか?お願いします。

お礼日時:2005/03/22 20:05

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