質問掲示板

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

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

スレッド

└◇108:
年度を100年戻す方法 [わに] 02/27 13:42

 └◇109:Re:年度を100年戻す方法 [moon] 03/01
  └◇110:Re[2]:年度を100年戻す方法 [moon] 03/01
   └◇111:Re[3]:年度を100年戻す方法 [わに_wa] 03/01 <


108● 年度を100年戻す方法[ わに ] 2004 02/27 13:42
レス、画像アップ機能付きのシンプルな日記を探していて、こちらを発見し、早速使わせていただきました。ありがとうございます。

3つ教えてください。

一つ目
管理画面、日記書き込みの際の日付選択で、選べる年度が1901年から1904年までになってしまいました。最初はちゃんと普通の年度が出ていたので、どうやら知らないうちにどこかを弄ってしまったのだと思うのですが、どこを触ったものか判りません。すみませんが、年度を元に戻すにはどうすれば良いか教えてください。

二つ目
自分で考えろ!と、怒られるかもしれませんが、こちらでお借りした日記スクリプトを利用して映画の感想ページを作りたいので、画面左肩のログ選択プルダウンを「XXXX年○月」という日付表示ではなく、映画のタイトルで選べるようにしたいのですが、無茶な相談でしょうか?もし、そんな事も可能であれば、ヒントだけでもいいので、どうすればいいか教えてください。

勝手なお願いですが、どうかよろしくお願いいたします。

http://waniwani.hypermart.net/cgi-bin/nik/nik.cgi

スレッド一覧


109● Re:年度を100年戻す方法[ moon ] 2004 03/01 01:01
レスが遅くなりました。
回答です。

> 3つ教えてください。
>
> 一つ目
> 管理画面、日記書き込みの際の日付選択で、選べる年度が1901年から1904年までになってしまいました。最初はちゃんと普通の年度が出ていたので、どうやら知らないうちにどこかを弄ってしまったのだと思うのですが、どこを触ったものか判りません。すみませんが、年度を元に戻すにはどうすれば良いか教えてください。


nik.cgi の 958行目辺りから

# 日付を取ろう!
print qq|<select name="year">\n|;
# (a..b) aからbまでの数字(年)を書き出す
foreach ($years-3..$years+3) {
    # 数字が同じだったら既選択にする
    if ($years == $_) {
        print qq|<option selected>$_\n|;
    # 違ったら普通に書き出す
    } else {
        print qq|<option>$_\n|;
    }
}
print qq|</select>年\n|;

というところの
$years-3..$years+3
というところです。
あらかじめ $years で 現在の日付を取り、
過去三年〜未来の三年を設定としています。
ここをいじったか、最初の時間の取得のところをいじったかわかりませんが、
最悪
foreach ($years-3..$years+3) {

foreach (2000 .. 2010) {
というように数字で強引に指定すればその範囲内の年になるかと思われます。


> 二つ目
> 自分で考えろ!と、怒られるかもしれませんが、こちらでお借りした日記スクリプトを利用して映画の感想ページを作りたいので、画面左肩のログ選択プルダウンを「XXXX年○月」という日付表示ではなく、映画のタイトルで選べるようにしたいのですが、無茶な相談でしょうか?もし、そんな事も可能であれば、ヒントだけでもいいので、どうすればいいか教えてください。

はっきりいいまして、難易度高め。
左上のプルダウンメニューは、
まず書き込みログを調べます。
ログは月毎に生成されますので、
その月のLOGがあった場合に左上のメニューに「○年○月」と表示するようにしています。
これをタイトルで表示するといった場合は、
中のLOGを開いてタイトルを取り出す作業をしなければいけません。

(レスが長くなりそうなので分割)
スレッド一覧


110● Re[2]:年度を100年戻す方法[ moon ] 2004 03/01 01:14
前レスからの回答続き


具体的には1145行目辺りの

# ログリスト読み込み
sub dir {

のサブルーチンの中で指定をします。

1218行目辺り、

} else {
    print qq|<option value="$cgi?log=$_">|;
    print substr($_,0,2) ."年";
    print substr($_,2,2) ."月\n";
}

これを

} else {
    open (INLOG,"$direct/$_");
    @view = <INLOG>;
    close(INLOG);
    foreach $view (@view) {
        (@_) = split(/\t/,$view);
        print qq|<option value="$cgi?log=$_&id=$_[4]">|;
        print $_[2] ."\n";
    }
}

このようにすればできるような気がします。
(動作確認してないので動かない場合あり)
ちなみにこれだと全てのタイトルを表示してしまうので、
LOGが多くなっていくと非常に多くのリソースを食うのでご了承くださいませ。

動かなかったら適当にがんばってください(笑)


> 勝手なお願いですが、どうかよろしくお願いいたします。


あれ、三つ目は?
スレッド一覧


111● Re[3]:年度を100年戻す方法[ わに_wanini@yahoo.co.jp_http://waniwani.hypermart.net/cgi-bin/nik/nik.cgi_sakujo ] 2004 03/01 23:38
一つ目の年度の件は、おかげ様で無事に戻すことができました。
有難うございました。

二つ目は、やっぱり無理があったのかエラーが出てしまいました。
エラー・ログによると「1219行目に認識できない文字がある」だそうです。
無茶なお願いをして申し訳ございませんでした。

お忙しいのに、迅速にお返事を下さって、本当にどうもありがとうございます。
三つ目の質問、二つ目で既にコーフンしすぎて、きくのわすれてました。
新規で登校させていただきます。すみません
スレッド一覧

CGIROOM