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

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

キャンペーン期間中だけ表示させる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日まで!」と表示されます。

今日は2024年03月28日です。

日付比較 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>';
}
?>

今日は2024年03月28日です。

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

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;
}
?>

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

今日は2024年03月28日です。

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

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

開始日を変数に代入します。
$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問付き! (スッキリわかる入門シリーズ)

3,030円(税込)

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

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

2,728円(税込)

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

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

2,200円(税込)

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

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

3,608円(税込)

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

日付比較の関連ページ

URLの疑似静的化

URLの疑似静的化 動的URLを静的URLにする方法

htacessを使いhtmlファイルが存在しない静的URLを生成する方法と、仕事で使った疑似URLの活用方法の紹介です。

ランダム表示バナー

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

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

PHPで作るカレンダーの作り方2

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

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

PHPの覚え方

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

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

配列の解説

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

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

PHPを使って作るCMS

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

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

PHPで作るカレンダー

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

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

POST送信

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

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

PHP覚え方

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

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

WEB言語紹介

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

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

indexOf

JavaScriptのIndexOfの使い方の復習

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

アンカーリンクナビ

交差監視を利用したアンカーリンクナビゲーション

JavaScriptの「Intersection Observer」を使い、ナビゲーションが変化するアンカーリンクを作りました。

bookblock

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

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

jquery-match-height.js

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

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

交差監視

Intersection Observer APIを図解で解説

Intersection Observerを仕事で使ったときに理解度が足りないと感じわかりやすい解説記事を書きました。

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

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

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

スクロール監視

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

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

tableデザイン

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

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

CLS対策上級編

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

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

CLS対策初級編

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

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

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

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

ノートPCスタンド
1位

ノートPCスタンド

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

車用スマホホルダー
2位

車用スマホホルダー

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

MusicBeeのレイアウト変更方法
3位

MusicBeeのレイアウト変更方法

MusicBee 3.1のレイアウトをデフォルトの状態から、自分好みのレイアウト設定に変更する方法を写真付きで紹介しています。

GTMの導入
4位

GTMの導入

Google Tag Manager 通称「GTM」と呼ばれる無料で使えるタグを管理するツールの説明と導入手順の解説

オープンイヤー型イヤホン GoFree2
5位

オープンイヤー型イヤホン GoFree2

初めて使ったSOUNDEPEATSのオープンイヤー型イヤホン「GoFree2」は想像していたよりずっと快適でした。

ハクバ 防湿庫
6位

ハクバ 防湿庫

ハクバの防湿庫KED-60をアマゾンで購入しました!ドライユニットは乾燥剤方式で60Lの容量の防湿庫です。

電子ノート
7位

電子ノート

電池もちが抜群で持ち運びに便利な電子ノートのレビューです。文庫本サイズの電子ノートはアイデアを思いつたらすぐにメモれる優れモノ

ツタヤディスカスでCD宅配レンタル
8位

ツタヤディスカスでCD宅配レンタル

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

ロジクール CRAFT
9位

ロジクール CRAFT

ロジクールが出している高級ワイヤレスキーボードCRAFTアプリがうまく動かなかったけどキーボードの使い心地は最高だった話

音楽再生
10位

音楽再生

パソコンに取り込んだ音楽をせっかくならCDコンポから再生したいと思ったことありませんか?AUXを使った外部接続の方法の紹介です。

カテゴリ一覧

オススメ商品レビュー

オススメ商品レビュー

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

WEB制作

WEB制作

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

カメラ

カメラ

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

美味しいもの

美味しいもの

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

Amazonプライム動画

Amazonプライム動画

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

旅LOG

旅LOG

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

プロフィール

プロフィール

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

日記

日記

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

thanks

thanks

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

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

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

2,750
(税込)