変化する休日に対応したい

このQ&Aのポイント
  • 変化する休日に対応したい場合、Googleのホリデーロゴのように特別なロゴを表示するcgiを作成する方法を教えてください。
  • 現在の方法では、母の日などの「第○日曜日」に対応できません。
  • また、ログに年の概念を利用せずに、一度作ってしまえば二度と変える必要のないプログラムを作りたいです。
回答を見る
  • ベストアンサー

変化する休日に対応したい。

googleのホリデーロゴ(http://www.google.co.jp/intl/ja/holidaylogos.html)のようなある日付でのみ特別なロゴを表示するようなcgiを作成したいです。 現在は以下の感じです。 while (<IN>) {  ($no,$start,$end,$img,$sub_alt) = split(/<>/);  if($start <=$d && $end >=$d){   print "<IMG src=\"$dir/event_logo/$img\"><BR>\n";   $count++;  } if($count eq "0"){  print "<IMG src=\"$dir/$def_img\" border=\"0\" ait=\"$sub_alt\">\n"; } しかし、この方法だと、母の日などの「第○日曜日」に対応できないです。 どうにかして、この毎年変わる祭日に対応できないでしょうか? また、ログ等は以下のようになってます。 ・$start、$endは「0123」の形で保存されています。 ・一度作ってしまえば二度と変える必要のないプログラムにしたいので、ログに年の概念は利用したくないです。(090123のように年まで入れると、毎年ログの管理をしないといけない) 何か方法があれば教えてください。

  • CGI
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

秋分の日など、不確定なものありますし、 祝日自体が増えたり減ったりするものなので、 ネットワーク上のカレンダーデータの APIサービスを使うのが楽だと思います。 http://www.google.co.jp/search?q=Google+Calender+Data+API&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a

関連するQ&A

  • 画像を使ったアクセスカウンターですが。。。

    どなたか教えていただければ大変ありがたいです。 画像(0.gif~9.gif)を使用し、アクセスカウンターを作る 次のソースの内、 ------------------------------------------------------------------- #!c:/perl/bin/perl require './sub_lock.pl'; $countfile = "./count.log"; $lockdir = "./lockdir"; exit unless(&lock($lockdir)); open(COUNTFILE, "+<$countfile"); chomp($count=<COUNTFILE>); $count++; seek(COUNTFILE, 0, 0); print COUNTFILE "$count\n"; truncate(COUNTFILE, tell(COUNTFILE)); close(COUNTFILE); &unlock($lockdir); $count_img = sprintf("%04d", $count); $count_img =~ s/(.)/<img src=".\/images\/$1.gif">/g; print "content-type:text/html\n\n"; print $count_img; exit; ------------------------------------------------------------------- $count_img =~ s/(.)/<img src=".\/images\/$1.gif">/g; の 「(.)」と「$1」になっているところが、どうも理解できなくて 困っています。 「=~ s」がパターンマッチであることだけは知っています。 CGI辞書などを調べてもやはり意味がわからず、お手上げ状態です。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • CGI
  • phpで困ってます。

    phpでNotice: Undefined offset:のエラーが出て困っています。ご指導よろしくお願いします。 まず、name.txtの内容からチェックボックスを生成し、そのチェックボックスにチェックを入れて送信します。 <?php $name_file = "name.txt"; $name_log = array(); // ログファイルの読み込み if (file_exists($name_file)) { $name_log = file( $name_file ); } // ログの内容をHTMLに変換する $html = ""; $count = 0; //チェックボックスの生成 foreach ($name_log as $line) { $checkbox = '<label><input class="che" type="checkbox" name="n['.$count.']" value="'.$line.'"><img src="'.$line.'"></label></br>'; $html .= $checkbox; $count ++; } $html .= '<input type="hidden" name="count" value="'.$count.'">'; ?>   後略 次に受け取る側ですが,チェックが入っている情報をもとにimgタグを生成しようとしています。 <?php $html = ""; $max = $_POST['count']; //n[ ]に送信されきた内容を代入 for ($i = 0; $i < $max; $i++) { if($_POST['n'][$i] != ''){ $img_src = htmlspecialchars($_POST['n'][$i], ENT_QUOTES); $img = '<img src="'.$img_src.'">'; $html .= $img; } } $fhn = fopen("show_html.txt","w"); fwrite($fhn,$html); fclose($fhn); ?> 後略 if($_POST['n'][$i] != '')の部分で Notice: Undefined offset:0 .............. Notice: Undefined offset:1 .............. Notice: Undefined offset:2 .............. . . . . のエラーが出ます。

    • ベストアンサー
    • PHP
  • テーブルの作り方で質問です

    こんにちは 下記のような流れの処理について教えて欲しいことがあります 1.イメージフォルダ内からファイル名を取得 2.テーブルを作成 3.テーブル内に<img src=img/$ファイル名> で画像を入れる <table width="750"> <? $dir=@opendir("img"); while($file = readdir($dir)){ print "<tr>"; print "<td><img src='img/$file' alt='$file'></td>"; print "</tr>"; } closedir($dir); ?> </table> 上記コードで1~3の単純な処理自体は出来ているのですが、テーブルの 見栄えとしては横並びに3~4個程度の<td>を入れたいのですが どうしたらいいのかわかりません。 どういう風に考えて作ればいいか教えて頂けますでしょうか 宜しくお願いします

    • ベストアンサー
    • PHP
  • if 文の使い方について

    質問します ************************************************ data.log ($no<>$pt2<>$sp2<>$sub2<>$url2<>$img2) ************************************************ @lines = ($line1); foreach $line(@lines){ my($no,$pt2,$sp2,$sub2,$url2,$img2) = split(/<>/,$line); $no =~ s/\0/\,/g; $comment =~ s/\0/\,/g; $no || last; ************************************************ if ($img2 eq '') { $img2 = $img2; } elsif ($img2) { $img2 = <img src="./info/data/$img2" alt="" border="0">; } ************************************************ data.logの$img2が空データの場合空で処理し イメージデータがある場合<img src="./info/data/$img2" alt="" border="0">を記載したいのですが 文法の基礎がないため行き詰まっております。 説明もうまくできていませんが趣旨ご理解いただける方にご教授お願いしたいと存じます。 よろしくお願いいたします。

    • 締切済み
    • CGI
  • 昨日と今日のカウンタについて ご指摘下さい

    昨日と今日のカウンタについて カウンターが1こずつではなく、4つとか5つとかずつ増えてしまいます。ですが、html内の <p>本日の数は<img src="./count.cgi?today">です</p> <p>昨日の数は<img src="./count.cgi?yeaday">です</p> を削除すると、ちゃんと1つずつカウントしていきます。(count.datの本日のカウント数もちゃんと1こずつ増えるのを確認しました。) プログラムの何処が間違っているのでしょうか?アドバイスをお願い申し上げます。 <<count.cgi>> #!C:\Perl\bin\perl # 昨日と今日のカウントの取得 $ENV{'TZ'} = "JST-9"; $mday = (localtime(time))[3]; open (FILE, "<logday.dat") || die "File Open Err!-logday.dat\n"; $logday = <FILE>; close(FILE); ($day, $yesday) = split(/:/, $logday); #それぞれ、今日の日付、昨日のカウント数に分ける open(FILE,"<count.dat") || die "File Open Error!-count.dat\n"; $count = <FILE>; #変数countにデータを収納 close(FILE); ($count, $today) = split(/:/, $count); #それぞれ、トータルカウント数、今日の日付のカウント数に分ける # 数をカウント if($day == $mday){ #同日だったなら、トータルと本日のカウントだけ取る。 &totalcount(); }else{ #違っていたら、本日のカウント数を昨日へ、本日のカウントを0に、日にちを修正 $yesday = $today; $today = 0; open (FILE, ">count.dat") || die "File Open Err!-logday.dat\n"; flock(FILE,2); print FILE "$count\:$today"; flock(FILE,8); close(FILE); open (FILE, ">logday.dat") || die "File Open Err!-logday.dat\n"; flock(FILE,2); print FILE "$mday\:$yesday"; flock(FILE,8); close(FILE); &totalcount(); #その後カウントをとる } # 引数受取 $mode = $ENV{'QUERY_STRING'}; $mode =~ s/\W//g; require "./gifcat.pl"; #画像表示のif文================ if($mode eq "total"){ &total(); }elsif($mode eq "today"){ &today(); }else{ &yestaday();} exit; # ログの更新================================ sub totalcount{ open(FILE, "+<count.dat") || die "File Open Error!\n"; flock(FILE,2); $count++; #トータルカウント数にプラス1 $today++; #同じく本日のカウント数にもプラス1 seek(FILE, 0, 0); print FILE "$count\:$today"; flock(FILE,8); close(FILE); } # カウンタの数字に画像を付ける sub total{ #トータルカウンタ============= @countdata = split(//, $count); foreach $cou(@countdata){ push(@view, "./img-t/$cou.gif"); } #画像の出力=============== print "Content-type:image/gif\n\n"; binmode(STDOUT); print &gifcat::gifcat(@view); } sub today{ #今日のカウンタ============= @countdatadt = split(//, $today); foreach $coudt(@countdatadt){ push(@viewdt, "./img-d/$coudt.gif"); } #画像の出力=============== print "Content-type:image/gif\n\n"; binmode(STDOUT); print &gifcat::gifcat(@viewdt); } sub yestaday{ #今日のカウンタ============= @countdatady = split(//, $yesday); foreach $coudy(@countdatady){ push(@viewdy, "./img-d/$coudy.gif"); } #画像の出力=============== print "Content-type:image/gif\n\n"; binmode(STDOUT); print &gifcat::gifcat(@viewdy); } <<count.html>> <html> <head> <title>カウンタ</title> </head> <body> <p>トータルカウント数は<img src="./count.cgi?total">です</p> <p>本日の数は<img src="./count.cgi?today">です</p> <p>昨日の数は<img src="./count.cgi?yeaday">です</p> </body> </html> <<count.dat>> トータル数:本日のカウント数 <<logday.dat>> 今日の日:昨日のカウント数

    • ベストアンサー
    • Perl
  • アクセスカウンタの呼び出し方

    以下のような(アクセスカウンタ)をPerlで書きました #!c:/Perl/bin/Perl.exe print "Content-type:text/html\n\n"; &main; sub main {    my $ninzu,@Hninzu;    $ninzu=&yomikomi;    @Hninzu=&sujibunaki(@Hninzu,$ninzu);    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[8].".gif>";    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[7].".gif>";    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[6].".gif>";    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[5].".gif>";    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[4].".gif>";    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[3].".gif>";    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[2].".gif>";    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[1].".gif>";    print"<IMG SRC=http://localhost/data/suji/".$Hninzu[0].".gif>"; } sub yomikomi {    my $ninzu;    open(RH,"<","count.txt") or die"ファイルが見つかりません";    $ninzu=<RH>;    close(RH);    open(WH,">","count.txt");    $ninzu++;    print WH"$ninzu";    return $ninzu; } sub sujibunaki {    my @Hninzu,$ninzu,$i;    @Hninzu=@_;    $ninzu=shift;    @Hninzu[8]=int $ninzu/100000000;    @Hninzu[7]=int $ninzu%100000000/10000000;    @Hninzu[6]=int $ninzu%100000000%10000000/1000000;    @Hninzu[5]=int $ninzu%100000000%10000000%1000000/100000;    @Hninzu[4]=int $ninzu%100000000%10000000%1000000%10000/10000;    @Hninzu[3]=int $ninzu%100000000%10000000%1000000%100000%10000/1000;    @Hninzu[2]=int $ninzu%100000000%10000000%1000000%100000%10000%1000/100;    @Hninzu[1]=int $ninzu%100000000%10000000%1000000%100000%10000%1000%100/10;    @Hninzu[0]=int $ninzu%100000000%10000000%1000000%100000%10000%1000%100%10;;    return @Hninzu; } これを別のファイル(.html)からこのファイル(.plに)表示される画像 (カウンタ画像)だけを呼び出して.htmlに表示したいんですけど、 どうすればよろしいですか? でしょうか?

  • うまくいかなくて、困っています

    http://www.olive-design.com/~cgi/perl/bbs01.html こちら様の中身を http://www.kazenosawa.jp/jp/site.html の形で表示させたく改造を試みておりますが うまくいきません。 どこが悪いのかもHTMLぐらいしかわからない 私の脳みそではわかりません どなたかご指摘ください よろしくお願いいたします ****perlの中身↓**** #!/usr/bin/perl #このスクリプトの場所 $this = "./oboegaki.cgi"; #ログファイルの場所 $logfile = "./log.dat"; #フォームからデータを読み込み #読み込んだデーターを$inputに代入 $input = $ENV{ 'QUERY_STRING' }; #$inputから文字列をsplitで分解(=を削除)して$nameと$commentに代入 ($name,$comment) = split /=/, $input; #--valueデータのデコード処理 $comment =~ tr/+/ /; $comment =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; #データファイル読み込み open(LOG, "$logfile"); @log = <LOG>; close(LOG); #ログ保存数を設定 $data_max = 100; #コメントが追加された時の処理 if ($comment){ open(LOG,">$logfile") ; unshift (@log,"$comment\n"); #ログ保存数を設定($# は変数のインデックスの最大値を求める記述) if ($#log > ($data_max -1)){ $#log = $data_max -1; } print LOG @log; close(LOG); } #HTMLの表示 print <<"HTML"; Content-type: text/html <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS' /> 省略 <meta name='copyright' content='風の沢ギャラリー' /> 省略 <link id='style_0' rel='alternate stylesheet' href='./css/font_smallset.css' type='text/css' charset='utf-8' title='Largest Fonts' /> <script type='text/javascript' src='./js/font.js'></script> <script type='text/javascript' src='./js/lib.js'></script> </head> <body> <div class='base'> <div class='box'><a href='http://www.kazenosawa.jp/'><img src='./img/logo_mini.png' alt='風の沢ギャラリー' border='0' /></a></div> <div class='box_r'></div> <div class='contents'> <!--<img src='./img/top.jpg' />--> <a href='./exhibition/index.html' onMouseOver='changeImage1()' onMouseOut='changeImage2()'><img src='./img/menu1.png' border='0' name='menu1' alt='企画展覧会' /></a> 省略 <a href='./rent/index.html' onMouseOver='changeImage7()' onMouseOut='changeImage8()'><img src='./img/menu4.png' border='0' name='menu4' alt='レンタル' /></a> <div class='second_header'> 省略 </div> <img src='./img/menu-info.gif' border='0' alt='ご利用案内' /> 省略 <img src='./img/sub_title_made.gif' border='0' alt='覚え書き' /> <div class='honbun'> <p class='txt'> <form action='$this'><br> HTML #コメント部分の表示 foreach $com (@log){ print "=> $com<br/>"; } 保存コメント数は $data_max です。<br> 入力 => <input type=text name="comment"> <input type="submit" value="送信"> print "</p></div></div></div><div class='bottom'><br />"; print "<script src='http://www.google-analytics.com/urchin.js' type='text/javascript'></script><script type='text/javascript'>"; print "_uacct = 'UA-3709853-1'@;"; print "urchinTracker()@;"; print "</script>"; print "</body></html>"; exit; __END__

  • フォルダの画像一覧

    下記の画像一覧のcgiを下位フォルダをリンク表示して下位フォルダにも進んでいけるようにしたいのですが、どのようにしたらよいでしょうか。下記も教えていただいたものを利用している素人です。よろしくお願いいたします。 $width_height = 'WIDTH=40 HEIGHT=55'; $dir = './'; #################### print "Content-type: text/html;CHARSET=x-sjis\n\n"; print "$dir の jpg一覧<P>\n"; print "<TABLE BORDER>\n"; print "<TR><TH>イメージ<TH>ファイル名<TH>サイズ(k)\n"; opendir(DIR, "$dir"); while ($_ = readdir(DIR)) { if (substr($_,-4,4) eq "\.jpg") { # jpgだけ出力 ($size) = (stat("$dir/$_"))[7]; # ファイルサイズ所得 print "<TR>"; print "<TD><A HREF=\"$dir/$_\" TARGET=\"jpg\"><IMG SRC=\"$dir/$_\" $width_height></A>"; # 画像(リンクあり) print "<TD><A HREF=\"$dir/$_\" TARGET=\"jpg\">$_</A>"; # ファイル名(リンクあり) print "<TD ALIGN=RIGHT>$size\n"; # サイズ } } closedir(DIR); print "</TABLE>\n"; exit:

    • ベストアンサー
    • Perl
  • どうしたらいいんでしょか?

    お世話になります。 ディレクトリごとでメニューの表示状態を変えたいと思い、下記のようなプログラムを書いたんですけど、オンマウスの個所が動作しません。原因はどこにあるんでしょうか? 多分、””の使い方がわかっていないと思うのですが・・・。 print "<li><img src='../img/gm_1b.gif' alt='menu1'></li>";の行の src='../img/gm_1b.gif' alt='menu1'の部分のシングルコーテション「'」も本来なら「"」で書きますよね?(htmlでは) なぜシングルコーテションにしないといけないのかわからないし・・・。 どうぞよろしくお願いします。 <ul> <?php //現在のディレクトリを調べる $path = dirname($_SERVER["SCRIPT_NAME"]); //ディレクトリ変数設定 $string1 = "aaa"; if (strstr($path,$string1)) { print "<li><img src='../img/gm_1b.gif' alt='menu1'></li>"; } else { print "<li><a href='#'><img src='../img/gm_1a.gif' onMouseOver='src='../img/gm_1b.gif'' OnMouseOut="src='../img/gm_1a.gif'' alt='menu1'></a></li>"; } ?> </ul>

    • ベストアンサー
    • PHP
  • (PHP)srcエラーの意味

    ●質問の主旨 下記のコードでを実行しようとすると、 print('<img src="'.$img.'" alt="'.$prof[0].'" />'); のところで、 Parse error: syntax error, unexpected 'src' (T_STRING) が出ます。 どこを修正すればよいのでしょうか? ご存知のかたよろしくお願いします。 ●コード <?php foreach($data as $name => $prof) { $img =''; $pos = mb_strpos($name, $_POST['keywd']); if ($pos !== FALSE) { $img = '../images/male.gif'; } else if ($prof[0] === '男') { $img = '../images/female.gif'; } else { $img = '../images/other.gif; } print('<img src="'.$img.'" alt="'.$prof[0].'" />'); print('<dt>'.$name.'</dt>'); print('<dd>性別:'.$prof[0].'</dd>'); print('<dd>誕生日:'.$prof[1].'</dd>'); print('<dd>住所:'.$prof[2].'</dd>'); } } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう