日付比較を使ってキャンペーンメッセージを表示

日付比較を使ってキャンペーンメッセージを表示

キャンペーン期間中だけ表示させるPHPプログラム

#187 日付比較

WEB制作

キャンペーンが終了したらメッセージを非表示にするコードです。 開始するときはちゃんと準備するけど、終わった時に外すの忘れがちなので、最初から期間設定しておけば、そういった手間も省けます。 コードは簡単で汎用性の高いPHPプログラムです。

公開日:
最終更新日:

サイトマップサイトマップ

掲載期間を設定したキャンペーン表示するPHP

指定の期日内だけ、キャンペーン情報を表示させるPHPです。

2022年7月31日までのキャンペーンがあったとして、以下のように記述すると2022年7月31日までは表示され、8月1日以降は何も表示されなくなります。

日付比較をして、指定年月日内だったら表示させるという仕組みですね。

2022年7月31日までのキャンペーン用設定

<?php 
//掲載終了日を設定
$end_date = new DateTime("2022-08-01");

//掲載終了日前だったら表示させる
if($end_date >= new DateTime()){
	echo '<p>期間限定 2022年7月31日まで!</p>';
}
?>

日付比較PHP 実際の動作

8月1日以降は何も表示されませんが、それ以前であれば「期間限定 2022年7月31日まで!」と表示されます。

今日は2022年10月07日です。

日付比較 PHPコードの解説

$end_date で終了日時を設定します。
この時に、キャンペーン終了年月日 +1日を指定します。

この日以降は表示しないという年月日を設定。
比較式がそうなっているからなんですが。

終了年月日にDateTimeの設定

終了年月日は DateTimeクラスを使用して、指定の日時をセットします。

$end_date = new DateTime("2022-08-01");

DateTimeを使わないと、ただの文字比較になって思わぬ動作をする場合がありますので注意です。

$end_date = '2022-08-01' ←これはNGパターン。

日付の比較を行う

if($end_date >= new DateTime()){

ここでif文を使って、終了年月日と、現在日時の比較をしています。

new DateTime()と、日付を入れないと現在の年月日を取得するので、それと$end_dateを比較しているわけですね。

現在の年月日より終了日時の方が大きい場合、という構文になっています。

キャンペーン期間内の記述をする

if文がTrueだった場合の処理を記載して完了です。

echo '<p>期間限定 2022年7月31日まで!</p>';

キャンペーン終了時に終わったメッセージを追加する

勘の良い方ならお気づきだと思いますが、elseを追加すれば終了時にメッセージを追加できます。

<?php 
//掲載終了日を設定
$end_date = new DateTime("2022-08-01");

//掲載終了日前だったら表示させる
if($end_date >= new DateTime()){
	echo '<p>期間限定 2022年7月31日まで!</p>';
}else{
	echo '<p>キャンペーンは終了しました。</p>';
}
?>

今日は2022年10月07日です。

キャンペーンは終了しました

2022年8月1日以降は、キャンペーンは終了しましたと表示されます。

開始日~終了日までの設定

開始日前に準備しておいて、終了日がきたら非表示にする場合のコードです。

if文で作るとコードがわかりづらくなるのでswitch文で記述します。

<?php 
//開始日の設定
$start_date = new DateTime("2022-07-01");

//掲載終了日を設定
$end_date = new DateTime("2022-08-01");

//現在年月日の取得
$now_date = new DateTime();
switch($now_date){
	//開始日より前の場合
	case $start_date >= $now_date:
		echo '開始日前です';
		break;

	//終了日以降の場合
	case $end_date <= $now_date;
		echo 'キャンペーンは終了しました';
		break;

	//掲載期間中
	default:
		echo '期間限定 2022年7月31日まで!';
		break;
}
?>

開始日~終了日 実際の動作

今日は2022年10月07日です。

キャンペーンは終了しました

開始日~終了日のコード解説

開始日を変数に代入します。
$start_date = new DateTime("2022-07-01");

現在年月日を比較に何度か使うので、変数化しておきます。
$now_date = new DateTime();

switch文で、現在年月日を比較対象にして、caseで比較演算子で比較します。

開始日前の処理

case $start_date >= $now_date:

2022年7月1日から開始なので、開始日($start_date)が現在年月日より大きければtrueになります。

開始前にわざわざ「開始日前です」と書く必要はないと思いますが、例文なので。

わかりやすく記述すると、今日が2022年6月30日だとしたら、
2022年7月1日 >= 2022年6月30日 という比較になります。

この場合は、キャンペーン前なので、キャンペーン前のメッセージが表示されると。

現在日時が2022年7月1日以上の場合、このcaseをスルーして次の処理に進みます。

終了日以降の処理

case $end_date <= $now_date;

これはさっきまでと同じ処理ですね。
if文がswith文に変わっただけです。

終了日よりも小さい場合は、この処理を抜けて、次の「default」に進みます。

掲載期間中の表示

default:

defaultはcaseがどちらも当たらなかった場合の処理になります。

なので、掲載開始日以降で、終了日前の場合はこの処理が走ります。

比較日を増やせばさらに細かく表示ができます

このswitch文に、キャンペーン終了7日前の条件を追加すれば、
「お急ぎください!終了まであと7日」のような表示も可能です。

期間限定の訴求はかなり強いので、うまく使うことで売上を増やすことが可能です。

PHPで書くとソースコードに残らないメリット

日付比較で表示・非表示を切り替えるコードの紹介でした。

似たようなことはJavaScriptでも実現可能ですが、JavaScriptで書くとソースコードに記述が残り、キャンペーンがやっていたと見る人が見るとわかります。
(そんなこと気にする必要はないような気もしますが。)

PHPで記述すると、サーバーサイドで処理されるので、PHPコードそのものはブラウザにレンダリングされません。

あと、個人的にはPHPのが記述が簡単です。

ランダムバナー表示と絡めてつかったり、色々と応用の効くコードになっています。

以上、期間を設定したキャンペーン用設定でした。

WEBデザイナー・プログラミング学習にオススメ

記事内で紹介している商品リスト
(価格はAmazon参考価格)

初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉

2,750円(税込)

初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉

誰もがあきらめずにすむPHP超入門

1,848円(税込)

誰もがあきらめずにすむPHP超入門

イラストでよくわかるPHP はじめてのWebプログラミング入門

1,980円(税込)

イラストでよくわかるPHP はじめてのWebプログラミング入門

詳細! PHP 8 + MySQL入門ノート XAMPP + MAMP 対応

3,520円(税込)

詳細! PHP 8 + MySQL入門ノート XAMPP + MAMP 対応

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ)

4,300円(税込)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ)

よくわかるPHPの教科書 【PHP7対応版】

2,728円(税込)

よくわかるPHPの教科書 【PHP7対応版】

スラスラ読める PHPふりがなプログラミング (ふりがなプログラミングシリーズ)

2,200円(税込)

スラスラ読める PHPふりがなプログラミング (ふりがなプログラミングシリーズ)

Bootstrap 4 フロントエンド開発の教科書

3,608円(税込)

Bootstrap 4 フロントエンド開発の教科書

日付比較の関連ページ

WEB言語紹介

WEB制作をささえるHTML・CSS・Javascript・PHP

いつもWEB制作をささえてくれるいろいろな言語を紹介しています。 他にもMySQLがあるんですが長くなるので割愛しました

ランダム表示バナー

PHPで作るランダムバナー表示プログラム

PHPでランダム表示させるバナープログラムです。 バナーと言っていますが、別にバナーじゃなくてもランダムで表示できます。

PHPを使って作るCMS

PHPを覚えたらSQLも覚えて自作のCMSを作ってみよう

PHPを覚えたらデータベース回りも一緒に覚えるのがオススメです、 制作できるものの幅が広がって色々な仕組みを理解できます

カレンダーの作り方2

PHP+jQueryで作る土日祝日が選べないカレンダーの作り方

PHPで作るカレンダーの作り方の第二弾です。 今回はクリックした日付を取得してformに代入するところも解説してます。

PHPの覚え方

PHPの良いところは難しいと思われていること

PHPって人が思っているほど難しくなく、便利でいろいろな面白いものを作れるプログラミング言語です。

配列の解説

PHPの連想配列の多次元配列を使ったクイズの作り方

PHPの配列ってイメージは付くけどちゃんと理解するのが難しい。 例題がわかりづらいせいだと思うんですよね。これはわかりやすい。

PHP覚え方

PHPを手っ取り早く覚えるには作りたいものを作ること

PHP単体でもHTMLよりもできることの幅はひろがるけれど、それにプラスしてデータベースを扱えるようになると無敵感を味わえます。

カレンダー

PHP+HTMLで作る 祝日対応のカレンダーの作り方

forとifとforeachがメインのPHPによるカレンダーの作り方です。 祝日設定がちょっとめんどくさいんですよね。

POST送信

PHPを使った漢字クイズの作り方解説 その1 POST送信

【初心者向け】PHPを使った漢字クイズの作り方を解説します。1回目はGETとPOSTの簡単な解説から実際に使うPHPの紹介です。

つまづきやすい5つのポイント

【初心者むけ】Jqueryのつまづきやすい5つのポイント解説

Jqueryの構文がわかってなかったとき、とりあえずコピペして使ってました。 ちゃんと理解して使うとできることが増えます

bookblock

本をめくるJqueryライブラリ bookblock

本をめくるようなモーションを実現するbookblock.jsを改造してレスポンシブ対応にしてみました。

jquery-match-height.js

高さを簡単に揃えるjquery-match-height.js

簡単に要素の高さを揃える「jquery-match-height.js実際の使用例をわかりやすく画像付きで解説しています。

スクロール監視

スクロール監視の新定番 intersecton observer API

スクロールに応じて何を変更させたりするときに便利なintersecton Observer APIの解説記事です。

WEBフォント設定

WEBフォント使用時の最適な設定を考える

私のサイトではNotoSansJPのWEBフォントを使用しています。 可能な限り速度とCLSを考慮して使っております。

アイキャッチの作り方

参考にならない適当につくるアイキャッチの作り方!

ブログのアイキャッチをどうやって作っているかの解説であって、効果があがるとかクリック率が高いとかそういうのじゃないです。

tableデザイン

tableで作る表をシンプルでキレイに作るHTMLとCSS

tableで表を作るときに気を付けたいのが、どこまでシンプルでわかりやすく作れるかという点ではないかと個人的には思ってます

indexOf

JavaScriptのIndexOfの使い方の復習

indexOfを使ってindex番号を取得する方法の解説記事を書いていたら、indexOfを使わなくても取得できました。

CLS対策上級編

CLS対策上級編 CSSのインライン化とAdcence遅延読み込み

CSSのインライン化とGoogle Adcence遅延読み込みでGoogleのスコアを大幅に改善しCLSもほぼ0にしました

CLS対策初級編

CLS改善をしてPageSpeed Insightsを大幅改善

CLS(Cumulative Layout Shift)を改善する方法とCLSを確認する方法などをまとめました。

CSSで作る横スライド

1行のCSSで作る横スライドの作り方

CSSのoverflow-x: scrollを使った横スライドの簡単な作り方と事例紹介です。 簡単便利はいいことだ。

SNSでこの記事をシェアできます

ブログ デイリーアクセスランキング

カー用品
1位

カー用品

スマホをカーナビとして使うと熱さで充電ができなくなるので、熱対策と1年間使って外れることがなかったスマホホルダーの紹介。

アンズテック
2位

アンズテック

小学生向けのゲームプログラミングオンラインスクール「アンズテック」。 仕様言語は「Scratch」と「Unity」となっています。

ノートPCスタンド
3位

ノートPCスタンド

ノートパソコンを横にしまうと結構な専有面積があるのですが、立てて収納できればわずか数cmで使えるので本当に快適です!

ツタヤディスカス
4位

ツタヤディスカス

定額レンタル宅配CD・DVDサービスのツタヤディスカスを利用してみました。 1ヵ月で20枚レンタルしました!1枚93円!

ピッコマ
5位

ピッコマ

無料でマンガが読めるってほんとにいい時代になったもんだなと思います! 感謝の気持ちを抱きながら24時間待ってます!

運動会
6位

運動会

子供の運動会にα7Ⅲで初参戦!望遠レンズを買おうか迷ったのですが、本体とセットのズームレンズ1本で運動会を撮影してきました。

カレンダー
7位

カレンダー

forとifとforeachがメインのPHPによるカレンダーの作り方です。 祝日設定がちょっとめんどくさいんですよね。

CZUR
8位

CZUR

面倒な領収書のスキャニングが超簡単に完了できるLens Proのレビューです。 テクノロジーの進化を体感してびっくりしました。

Amazon
9位

Amazon

書籍読み放題サービスのアマゾンキンドルアンリミテッドの3ヵ月体験が終わり、その間に読みふけったマンガのレビューと体験談です。

Bluetoothイヤホンの使い方
10位

Bluetoothイヤホンの使い方

Bluetoothイヤホンのペアリング方法やリモコンの操作方法、リダイヤルの防止策を画像入りで解説します。

カテゴリ一覧

オススメ商品レビュー

オススメ商品レビュー

世の中にある比較サイトや、いかがでしたか系サイトが嫌いなんです。使ってないのにえらそうなこと言うなと。なので体験談です。

WEB制作

WEB制作

WEBサイトを作れますと一言に言っても色々な技術があるわけですよ。アウトプットの形は一緒でもいろいろこだわりがあるんです。

カメラ

カメラ

2018年4月に購入したソニーのミラーレス一眼「α7Ⅲ」に関連する記事一覧ページです。 作例集やカメラグッズレビューなど。

美味しいもの

美味しいもの

食に関してはあまりこだわりがないんですけどね、こだわりがない分美味しいと思ったものは本当においしいと思ったものなんですよ

Amazonプライム動画

Amazonプライム動画

Amazonプライム会員なら無料で利用できるAmazonプライム動画から、いろいろな動画をみたレビュー記事のまとめページ

旅LOG

旅LOG

家族旅行やおでかけした際の旅ブログです。夏休みの家族旅行(4人家族)で訪れた観光名所の感想などを記しています。

プロフィール

プロフィール

Start-Point.netの管理人のプロフィール紹介を兼ねた、自分の中のルールや決め事やエピソードなどを書いていきます。

日記

日記

日記と言っても色々な日記があるわけで、記録的な日記や心理描写を色濃く描いた日記などをまとめたページです。

thanks

thanks

自分を表現することって意外と難しいんですよね。照れがあったり、間違ったこといってないかとよくわからない何かと戦ったりして。

記事内で紹介している商品

初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉

2,750
(税込)