🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

解決済

2回答

1001閲覧

年末から数えて〇〇日目

rrr_s

総合スコア19

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

0クリップ

投稿2019/10/07 03:34

いつもお世話になっております。

年に1度のみ、HP上に画像をさせたい日があります。(毎年同じ日)
ydayにて**「年始(1/1)から数えて〇〇日後」**と設定しようとしたのですが
2月以降のため、うるう年問題が発生してしまいます。

そこで、**「年末(12/31)から数えて〇〇日目」**というような記述は
PHPでできるものなのかお聞きしたく
今回ご質問させていただきました。

ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/10/07 03:38

ふつうに月日をチェックする方法ではだめなのでしょうか(逆に「年始からの日数」を指定するスタイルのほうが特異なように思えます)。
rrr_s

2019/10/07 03:41

ご質問ありがとうございます! ”ふつうに月日をチェックする方法”を望んでおりました‥。。 ない頭を振り絞った結果「年始からの日数」カウントとしてしまっておりました。。 すみません、改めまして "ふつうに月日をチェックする方法"をご教示いただけますと幸いです。 よろしくお願いいたします。
maisumakun

2019/10/07 03:42

どのようなコードを書いていますか?
rrr_s

2019/10/07 03:46

毎週水曜に表示させるものは「wdayが3」というようにPHPで設定し それをSmartyで呼び出しております。 セキュリティ的にこちらにコードを書けず申し訳ございません。
papinianus

2019/10/08 09:36

tanat様回答へのコメントが理解できないです。$smarty.nowは現状の今を指すと思いますが、その今が何月何日か見れば、カレンダーで指定した日に飛んできてもカレンダーの当日には影響を受けなさそうですが。 このあたり含め、前回の回答により明らかになった問題点や、根本をいじるなという謎縛りでできないこと(サーバの今の時刻が取れないなど)を質問に補足していただきたいです
rrr_s

2019/10/08 11:28

コメントありがとうございます。 自分自身理解していないままの質問となってしまい、 言葉足りずで申し訳ございませんでした。
guest

回答2

0

うるう年の2/29を指定する場合を除き、普通にx月x日という日付で指定すればよいのでは?

投稿2019/10/07 04:10

yambejp

総合スコア116694

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

前回の質問
で使用した
$smarty.nowdate_format%d%mを組み合わせて使うと月日が取得出来るので、それを判定すればうるう年を気にしなくてOKです。

投稿2019/10/07 05:20

tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rrr_s

2019/10/07 08:54

ご回答ありがとうございます。 以前ご教示いただいた方法で実装したのですが、 例えば、「4月時点で5月1日(画像を出し分け表示したい日)」のページを見に行くと、 "現在"は4月なので、出し分けされず表示されてしまいました。。。 ですので、別方法をご質問させていただいている次第です。 わかりづらく、申し訳ございません。。
tanat

2019/10/07 09:08

うーん、であれば質問するべきは 「PHPではアサインされていない該当日時をどのように取得するか」 ですね。 で、これはアプリケーション固有の事情になるのでソースコードがわからないと誰も回答できなくなります。 エスパーすると、多分URLやGETパラメータに月と日が含まれているでしょうから、smarty上でこれらを取得して日付を判断することになるんじゃないかなと思います。 この辺 https://www.smarty.net/docsv2/ja/language.variables.smarty.tpl https://freo.wiki.fc2.com/wiki/Smarty%E3%81%AE%E4%BA%88%E7%B4%84%E5%A4%89%E6%95%B0 から取得できる変数を取得して、分解するなりして表示するページの月日を取得しましょう。 そこまでできればあとは単純な比較になります。 ただ、同じ(もしくは近い部分の)ロジックがPHP側でも実装されているはずなので、 本来であればこれらはPHP側の作業であるので、PHP側で月をassignしている部分辺りに追記することを提案する方が良いでしょうね。
rrr_s

2019/10/08 11:27

ご回答、ありがとうございます。 低レベルな質問で本当に申し訳ございませんでした。。
tanat

2019/10/08 11:34 編集

質問が低レベルというよりは、条件が難しい(普通はそういう指示はあまりしない)ということなので仕方ないかなと思いますよ。 Smartyだけでやるなら一つ前のコメントのリンクを参照して何とか月日を取得することで可能になると思います。が、よくよくPHP側でアサインしている値を確認したら月日もsmartyに渡されていたりするかもしれませんね。 debugが可能な環境なら https://www.smarty.net/docs/en/language.function.debug.tpl でアサインされている値を全て確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問