人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlでif文の書き方

バナーの表示・非表示を制御しようとしてます。
表示中と期限表示のバナー一覧を出し、「これは表示中」と「これは期限外休止中」の画像を表示させたいです。

if($view ne "3"){
if($view eq "2" && $sysdate2 <= $open || $sysdate2 >= $close){
$view_i="[これは期限外休止中!の画像ファイル名]";
}else{
$view_i="[これは表示中!の画像ファイル名]";
}
?
ここにリスト
?
}

$viewは1?3の数字で、「表示」「期限表示」「非表示」用です。
$sysdate2はサーバから取得した月日が「0123」(1月23日)等で設定。
$openと$closeには開始・終了日が「0123」(1月23日)等で入ります。

年をまたぐ形(10月30日?1月10日)で登録してみると、掲載期間なのに非掲載になってしまいます。
年をまたがなかったらこれでもいけるのですが、またぐバナーに関しては、年末まで用と年始から用の2つを登録しないといけなくなってしまいます。

どうにかして、1つのバナー登録でうまく表示する方法はありませんか?

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

年を含んだ値で比較すればうまくいくかもしれません。
月日だけでは、たとえば10月30日?1月10日の期間中の今日($sysdate2 = 1031)、
「$sysdate2 <= $open」は満たしませんが「$sysdate2 >= $close」は満たし、
期間外と判断されてしまいます。

あと2行目の条件文は念のため、次のように括弧( )を追加したほうがよさそうです。

if($view eq "2" && ($sysdate2 <= $open || $sysdate2 >= $close)){

また10月30日や1月10日を期間に含むのであればイコールを取り除いてください。

if($view eq "2" && ($sysdate2 < $open || $sysdate2 > $close)){

個人的には次のようにするほうが好みです。

if($view eq "2" && ($open <= $sysdate2 && $sysdate2 <= $close)){
$view_i="[これは表示中!の画像ファイル名]";
}else{
$view_i="[これは期限外休止中!の画像ファイル名]";
}


匿名回答1号さんのコメント
赤字部分訂正済。

匿名質問者さんのコメント
返答ありがとうございます。 すみません。もう1つ情報を記載していませんでした。 当初年も入れていたのですが、いわゆる季節バナーで毎年同じものをその時期になったら表示させるための物を作ろうとしていたので外しました。 毎年12月1日?1月11日は成人式のバナーを掲載する、のような感じですね。 この場合、年があると次の年は表示されなくなってしまいますよね… やはり年をまたぐものは2つ登録するしか方法はないでしょうか…

匿名回答1号さんのコメント
理解できました。それなら「$open <= $close」の真偽を評価しては? <PRE>if($view eq "2"){ if($open <= $close){ #年をまたがない場合 if($open <= $sysdate2 && $sysdate2 <= $close){ $view_i="[これは表示中!の画像ファイル名]"; }else{ $view_i="[これは期限外休止中!の画像ファイル名]"; } }else{ #年をまたぐ場合 if( ($open <= $sysdate2 && $sysdate2 <= 1231) || (0101 <= $sysdate2 && $sysdate2 <= $close) ){ $view_i="[これは表示中!の画像ファイル名]"; }else{ $view_i="[これは期限外休止中!の画像ファイル名]"; } } }</PRE> 自分好みのやり方をベースに、勝手な解釈で整理しています。 前後との関係によっては適さないかもしれませんが、 要点は伝わるかと思いますので、適宜直してください。 趣味範囲の知識でトライさせてもらいました。 下手さや不備があればすみません。 うまくいきますように(祈)。

匿名回答2号さんのコメント
0101 は駄目だなあ。 8進数と解釈されてしまうよ。

匿名回答2号さんのコメント
いや、0101(八進)=65(十進) だから、OK か。

匿名回答1号さんのコメント
感謝。大丈夫でしょうか?(祈)

匿名質問者さんのコメント
ありがとうございます。 今のところ希望通りの動作をしているようです。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ