質問掲示板

CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。

新規発言一覧最新記事過去一覧 | 検索HOME

スレッド

└◇272:
日記SP「開いた時にその月のログを表示」にはできませんか? [ぷりん] 01/15 23:31

 └◇274:Re:日記SP「開いた時にその月のログを表示」にはできませんか? [moon(も] 01/16
  ├◇276:Re[2]:日記SP「開いた時にその月のログを表示」にはできませんか? [ぷりん] 01/17
  │└◇277:Re[3]:日記SP「開いた時にその月のログを表示」にはできませんか? [moon(管] 01/17
  │ └◇278:Re[4]:日記SP「開いた時にその月のログを表示」にはできませんか? [ぷりん] 01/18
  │  └◇279:Re[5]:日記SP「開いた時にその月のログを表示」にはできませんか? [moon(管] 01/18
  │   └◇280:Re[6]:日記SP「開いた時にその月のログを表示」にはできませんか? [ぷりん] 01/18
  │    └◇281:すみません、もう1つ・・・ [ぷりん] 01/25
  │     └◇282:Re:すみません、もう1つ・・・ [moon(管] 01/25
  └◇284:便乗質問です。日記でできません。 [dan] 02/05
   └◇285:Re:便乗質問です。日記でできません。 [moon(管] 02/05
    └◇287:Re[2]:便乗質問です。日記でできません。 [dan] 02/06
     └◇288:Re[3]:便乗質問です。日記でできません。 [moon(管] 02/06
      └◇289:Re[4]:便乗質問です。日記でできません。 [dan] 02/06
       └◇290:Re[5]:便乗質問です。日記でできません。 [moon(管] 02/07 <


272● 日記SP「開いた時にその月のログを表示」にはできませんか?[ ぷりん ] 2006 01/15 23:31
set.cgiを開いた時に「最新ログ」ではなくて、その月のログを表示するようにはしてもらえませんか?(懇願)

→「LOGを選択」しないでも今なら1月のログを表示、2月になったら自動的に2月のログを表示してくれる・・・みたいな。

それが難しいようでしたら、開いた時に最新ログも表示されないで
必ず「LOGを選択」するようにする
・・・カスタマイズする方法とか教えて頂けないでしょうか。


***************************

日記としてではなくイベント日程として使いたいので、基本的に日付順(昇順)に並んでほしいのです。

(最新ログを昇順に設定した場合)
・日記ではないのでかなり未来の予定を書くこともあります。
書込んだのが随分前だと「最新ログ」に情報が載っていない。

イベント日程用に使えるcgiを随分探したのですが、思い描くものが全然ないんです。
(携帯対応でできればイベントのある日だけ載ってほしい)
こちらの日記SPは上記をクリアできれば見やすくて、求めていたものそのものです。

最初から表示されているとわかりづらい「最新ログ書込順」もタブで選んで見るようにした場合、更新したところが1番上に来て、見に来た人がどこを更新したのか一発でわかる非常に素晴らしい機能なんですよね。

なんとかしていただけないでしょうか・・・m(_ _)m

スケジュールでなく、イベント日程用cgiほしい人はいっぱいいると思います☆
スレッド一覧


274● Re:日記SP「開いた時にその月のログを表示」にはできませんか?[ moon(もしかしたら管理人) ] 2006 01/16 16:44
はじめまして。

ご質問の件ですが、
日記SPに関しては元となった日記のCGIのバージョンアップが激しく、
あまりバージョンアップする気はなかったりします。
申し訳ございません。
今の構想としては今後日記から複数の画像投稿ができるようになればいいな(希望)と思っているのです。(気力と時間がなくて手をつけられませんが)

あと、最初に月間のLOGをやる場合は改造が必要になってしまいます。
それは、最新のLOGだけは通常のLOGとは別に保存してあるためです。
なので、何も指定がないときはこの最新LOGを読みに行ってしまいますので、
自動で月ごとの表示は難しいです。

逆にいえば、そこさえいじれば何とかなるとは思いますが。

場所としては630行目くらいからが最新LOGを読み出しています。
        open (IN,$file);
        @line = <IN>;
        close (IN);

        if (@line) { print qq|<h3><font color="$tc">最近の日記</font></h3>\n|; }
        else { print qq|<h3><font color="$tc">LOGがありません。</font></h3>\n|; }

これを削除してしまえば最新LOGは表示されません。

ついでに言えば、ここで月のLOGを読めばいいのかなと思います。

&gettime;
$in{'log'} = $year .$mon;

        open (IN,"$direct/$in{'log'}");
        @line2 = <IN>;
        close (IN);

        if ($in{'id'}) {
            foreach (@line2) {
                if ($_ =~ /$in{'id'}/) {
                    push(@line,$_);
                }
            }
        } else {
            @line = @line2;
            print "<h3><font color=\"$tc\">" .substr($in{'log'},0,2) ."年";
            print substr($in{'log'},2,2) ."月";
            if ($view_sw == 1) {
                if ($in{'view'} eq 'a') { print "前半"; }
                elsif ($in{'view'} eq 'b') { print "後半"; }
            } elsif ($view_sw == 2) {
                if ($in{'view'} eq 'a') { print "上旬"; }
                elsif ($in{'view'} eq 'b') { print "中旬"; }
                elsif ($in{'view'} eq 'c') { print "下旬"; }
            }
            print "の日記</font></h3>\n";
        }

とやれば月ごとに読み出せるような気がします。
分からなかったら再度質問してください。
スレッド一覧


276● Re[2]:日記SP「開いた時にその月のログを表示」にはできませんか?[ ぷりん ] 2006 01/17 01:01
早速のお答え有難うございました。
これだけのcgiの新しいものを作るのには、さぞかし気力も時間も必要でしょうね。
無料でここまでのものを提供し、質問にも答えて下さって感謝感謝です。

お答え頂いたものをやってみたのですが、最新ログを表示しないところまでできましたが、月のログは読み込めません。。。わかりません・・・(T_T)削除した場所にそのまま貼り付ければいいんですよね?
今日はもう時間がないのでまた明日やってみようと思います。
スレッド一覧


277● Re[3]:日記SP「開いた時にその月のログを表示」にはできませんか?[ moon(管理人かも) ] 2006 01/17 16:50
> お答え頂いたものをやってみたのですが、最新ログを表示しないところまでできましたが、月のログは読み込めません。。。わかりません・・・(T_T)削除した場所にそのまま貼り付ければいいんですよね?

多分全角のスペースが入っているので、それが入るとエラーになります。
全角のスペースは半角にするか削除してください。
スレッド一覧


278● Re[4]:日記SP「開いた時にその月のログを表示」にはできませんか?[ ぷりん ] 2006 01/18 01:57
スペース消したらできました!有難うございます。。。

もう1つお聞きしたいです・・・
今回の改造によって最新ログ(nik.logですか)は全く表示されないようになりますよね。
できればプルダウンで選べば最新ログで書込or編集順も見られるようになるといいのですが、
大幅改造にならないご負担にならない程度でできるのでしたら教えて下さい。
スレッド一覧


279● Re[5]:日記SP「開いた時にその月のログを表示」にはできませんか?[ moon(管理人) ] 2006 01/18 12:18
動いたのですね。よかったです。

> 最新ログ(nik.logですか)は全く表示されないようになりますよね。
> できればプルダウンで選べば最新ログで書込or編集順も見られるようになるといいのですが、

とりあえず手順だけを説明します。

1338行目あたり。
print qq|<option value="$cgi">最近の日記\n|;

print qq|<option value="$cgi?saisin=new">最近の日記\n|;

590行目あたり
# 月間LOG/タイトル一覧からの個別ログ
if ($in{'mode'} eq 'res') {
    print qq|<p>レスを書き込みます</p>\n|;
} elsif ($in{'log'}) {

if ($in{'saisin'}) {
    open (IN,$file);
    @line = <IN>;
    close (IN);

    if (@line) { print qq|<h3><font color="$tc">最近の日記</font></h3>\n|; }
    else { print qq|<h3><font color="$tc">LOGがありません。</font></h3>\n|; }
} elsif ($in{'mode'} eq 'res') {
    print qq|<p>レスを書き込みます</p>\n|;
} elsif ($in{'log'}) {

とすれば動くような気がします。
(動作確認をしてないので、動かなかったらゴメンナサイ)
以上、がんばってください。
スレッド一覧


280● Re[6]:日記SP「開いた時にその月のログを表示」にはできませんか?[ ぷりん ] 2006 01/18 17:29
できました!
本当にありがとうございました。
結構長い間探し回っていたのですが、これで理想のcgiになりました。
お世話になりました。
また、これからいっぱい使わせてもらうのでよろしくお願いします。
早いレスも有難うございました。助かりました☆
スレッド一覧


281● すみません、もう1つ・・・[ ぷりん ] 2006 01/25 02:58
同じようにやって携帯からでもページを開いた時は当月のログにしました。
最新ログもどうにか見たいんですが・・・。
お教えいただけますか?
スレッド一覧


282● Re:すみません、もう1つ・・・[ moon(管理人) ] 2006 01/25 17:54
> 同じようにやって携帯からでもページを開いた時は当月のログにしました。
> 最新ログもどうにか見たいんですが・・・。

実際にテストをしていないので動くかどうかはわかりませんが・・・
携帯の設定はkei.plに記述されています。
また、i-modo・vodafone用(CHTML)と、au用(XHTML)に分かれていますので、同じような編集を二箇所ずつします。

まず523行目あたり
    print qq|<select name="day3">\n|;
    print qq|<option value="">\n|;
    print qq|<option value="a">上旬\n|;
    print qq|<option value="b">中旬\n|;
    print qq|<option value="c">下旬\n|;
    print qq|</select>\n|;

    print qq|<select name="day3">\n|;
    print qq|<option value="">\n|;
    print qq|<option value="new">最新\n|;
    print qq|<option value="a">上旬\n|;
    print qq|<option value="b">中旬\n|;
    print qq|<option value="c">下旬\n|;
    print qq|</select>\n|;
610行目あたりも同様に。

283行目
        if ($in{'day3'} eq "a") {

        if ($in{'day3'} eq "new") {
last;
        } elsif ($in{'day3'} eq "a") {

ちょっと下にある320行目あたり
        } else {

            $chh = "$in{'year'}$in{'mon'}$in{'day1'}$in{'day2'}";
            if ($_[0] =~ /^$chh/) {
                push(@datas,$line);
            }

        }
    }


    foreach (@datas) {
        (@_) = split(/\t/);

        } else {

            $chh = "$in{'year'}$in{'mon'}$in{'day1'}$in{'day2'}";
            if ($_[0] =~ /^$chh/) {
                push(@datas,$line);
            }

        }
    }

    open (IN,$file); #←これを入れる
    @datas = <IN>; #←これを入れる
    close (IN); #←これを入れる

    foreach (@datas) {
        (@_) = split(/\t/);

同じように380行目あたりからのものを修正する。

以上で大丈夫だと思います。
スレッド一覧


284● 便乗質問です。日記でできません。[ dan ] 2006 02/05 04:06
はじめまして。
便乗で質問させていただきます。

『日記』で上記と同じ事を行いたいのですが、どうも上手くできません。
※topページに月間のログを読み込みたい。

817行目の
        open (IN,$file);
        @line = <IN>;
        close (IN);

        if (@line) { print qq|<h3><font color="$tc">最近の$title2</font></h3>\n| if $title2; }
        else {
            print <<EOF;
<table bgcolor="$tw_c" width="$t_wid" border="0" cellspacing="1">
<tr>
<th>
<table border="0" width="100%" cellspacing="1" cellpadding="5">
<tr bgcolor="$tbt_c">
<th>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<th nowrap><font color="$ti_c">LOGがありません</font></th>


を削除したのですが、動作そのもができなくなってしまいました。。。
お忙しいとは思いますが、お力を貸していただけたら幸いです。

何卒よろしくお願いします。
スレッド一覧


285● Re:便乗質問です。日記でできません。[ moon(管理人) ] 2006 02/05 22:29
> 『日記』で上記と同じ事を行いたいのですが、どうも上手くできません。
> ※topページに月間のログを読み込みたい。

        open (IN,$file);
        @line = <IN>;
        close (IN);

        if (@line) { print qq|<h3><font color="$tc">最近の$title2</font></h3>\n| if $title2; }
        else {
            print <<EOF;
<table bgcolor="$tw_c" width="$t_wid" border="0" cellspacing="1">
<tr>
<th>
<table border="0" width="100%" cellspacing="1" cellpadding="5">
<tr bgcolor="$tbt_c">
<th>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<th nowrap><font color="$ti_c">LOGがありません</font></th>
<td nowrap align="right">
</td>
</tr>
</table>
</th>
</tr>
</table>
</th>
</tr>
</table>
EOF
        }

以上を全て削除してください。
中途半端に削除をすれば動かなくなります。

その上で、記事274の後半の部分をやれば出来るかと思います。
たぶん・・・
スレッド一覧


287● Re[2]:便乗質問です。日記でできません。[ dan ] 2006 02/06 03:58
早速のご返信、本当にありがとうございます。
無事に問題なくできました!!とても助かりました。

携帯表示でも同じ事を行いたいのですが、どこの行を削除&追加すれば、携帯でもTOPページに月間ログを表示させる事が可能でしょうか?
いろいろ削除したり追加したりいじったのですが、携帯表示ではどうも上手く動いてくれません。

それと別件でさらにご質問させて頂くと、--最近のLOG--と表示されますが、これの色を変更させたいです。

レベルの低い質問で大変お手数をおかけしますが、何卒お力を貸してください。

何卒よろしくお願いいたします。
スレッド一覧


288● Re[3]:便乗質問です。日記でできません。[ moon(管理人かも) ] 2006 02/06 15:50

> 携帯表示でも同じ事を行いたいのですが、どこの行を削除&追加すれば、携帯でもTOPページに月間ログを表示させる事が可能でしょうか?

すでに回答にありますが、携帯はi-modo用(CHTML)とau用(XHTML)の二箇所に同じような記載があるので、両方とも変更することを注意してください。
kei.plの44行目あたりから。

        open (IN,$file);
        @line = <IN>;
        close (IN);

        if (@line) {
            if ($title2) {
                print qq|<h3><font color="$tc">--最近の$title2--</font></h3>\n|;
            } else {
                print qq|<h3><font color="$tc">--最近のLOG--</font></h3>\n|;
            }
        } else {
            print qq|<h3><font color="$tc">LOGがありません。</font></h3>\n|;
        }

を削除。
削除した場所にPC用と同じように

&gettime;
$in{'log'} = $year .$mon;

        open (IN,"$direct/$in{'log'}");
        @line2 = <IN>;
        close (IN);

        if ($in{'id'}) {
            foreach (@line2) {
                if ($_ =~ /$in{'id'}/) {
                    push(@line,$_);
                }
            }
        } else {
            @line = @line2;
            print "<h3><font color=\"$tc\">" .substr($in{'log'},0,2) ."年";
            print substr($in{'log'},2,2) ."月";
            if ($view_sw == 1) {
                if ($in{'view'} eq 'a') { print "前半"; }
                elsif ($in{'view'} eq 'b') { print "後半"; }
            } elsif ($view_sw == 2) {
                if ($in{'view'} eq 'a') { print "上旬"; }
                elsif ($in{'view'} eq 'b') { print "中旬"; }
                elsif ($in{'view'} eq 'c') { print "下旬"; }
            }
            print "の日記</font></h3>\n";
        }

を入れてください。

同じように100行目あたりからの奴を変える。

これで一応動くと思います。


> それと別件でさらにご質問させて頂くと、--最近のLOG--と表示されますが、これの色を変更させたいです。

これは携帯用ですか?
管理用設定画面から変更できると思いますが、直接変更したい場合は、
kei.plで「最近の」と言うキーワードで検索してみてください。
四箇所HITすると思いますが、いずれも<font>タグで色を指定しているだけなので、直接変更すればOKです。
スレッド一覧


289● Re[4]:便乗質問です。日記でできません。[ dan ] 2006 02/06 21:12
非常にお早い回答ありがとうございます。
疑問点は全て解決し、問題なく動作しております。
大変大変感謝しております。

何度も申し訳ありませんが、もうひとつだけ質問させてください。

携帯表示だけで良いのですが、
『ほかの記事を読む』をクリックした時に、年、月表示だけにさせていたです。
イベントお知らせとして使用予定なのですが、月ごとの検索を行いたいと思っております。
その月の予定イベントが全て表示するようにしたいです。

大変お忙しい中、恐縮ですが何卒よろしくお願いいたします。
スレッド一覧


290● Re[5]:便乗質問です。日記でできません。[ moon(管理人みたい) ] 2006 02/07 12:11
> 携帯表示だけで良いのですが、
> 『ほかの記事を読む』をクリックした時に、年、月表示だけにさせていたです。
> イベントお知らせとして使用予定なのですが、月ごとの検索を行いたいと思っております。
> その月の予定イベントが全て表示するようにしたいです。


kei.pl
866行目あたり

    ($mday1,$mday2) = split(//,$mday);
    print qq|<select name="day1">\n|;
    for (0..3) {
        if ($mday1 == $_) {
            print qq|<option value="$_" selected>$_\n|;
        } else {
            print qq|<option value="$_">$_\n|;
        }
    }
    print qq|</select>\n|;
    print qq|<select name="day2">\n|;
    for (0..9) {
        if ($mday2 == $_) {
            print qq|<option value="$_" selected>$_\n|;
        } else {
            print qq|<option value="$_">$_\n|;
        }
    }
    print qq|</select>日<br>\n|;
    print qq|または\n|;
    print qq|<select name="day3">\n|;
    print qq|<option value="">\n|;
    print qq|<option value="a">上旬\n|;
    print qq|<option value="b">中旬\n|;
    print qq|<option value="c">下旬\n|;
    print qq|</select>\n|;

を削除。
同じように953行目辺りの同じ記述を削除。

nik.cgi 115行目あたり
    elsif ($mode == 2) {    # ほかの記事選択FORM
        if ($FORM{'day3'}) { &logvw_w3; }
    }
これを↓にかえる
    elsif ($mode == 2) {    # ほかの記事選択FORM
        &logvw_w3;
    }


で、またkei.pl
483行目辺りの
sub logvw_c3 {
のサブルーチン内。


    open (IN,$log_file_c);
    @line = <IN>;
    close (IN);

    foreach $line (@line) {
        (@_) = split(/\t/,$line);

        if ($in{'day3'} eq "a") {

            for (1..10) {
                $_ = sprintf("%02d", $_);
                $chh = "$in{'year'}$in{'mon'}$_";
                if ($_[0] =~ /^$chh/) {
                    push(@datas,$line);
                }
            }

        } elsif ($in{'day3'} eq "b") {

            for (11..20) {
                $chh = "$in{'year'}$in{'mon'}$_";
                if ($_[0] =~ /^$chh/) {
                    push(@datas,$line);
                }
            }

        } elsif ($in{'day3'} eq "c") {

            for (21..32) {
                $chh = "$in{'year'}$in{'mon'}$_";
                if ($_[0] =~ /^$chh/) {
                    push(@datas,$line);
                }
            }

        } else {

            $chh = "$in{'year'}$in{'mon'}$in{'day1'}$in{'day2'}";
            if ($_[0] =~ /^$chh/) {
                push(@datas,$line);
            }

        }
    }

これを以下に変更

    open (IN,$log_file_c);
    @datas = <IN>;
    close (IN);

同じように
sub logvw_w3 {
の中のものを変更。

でできそうな感じです。

案の定テストをしていないので、動かなかったら再度質問してください。
スレッド一覧

CGIROOM