PHPで前月、次月への遷移ボタンを実装したカレンダーを作る

PHPで前月、次月への遷移ボタンを実装したカレンダーを作る

以前書いた記事のコメントで質問をいただいたので新たに書きました。対象の月に対応した前月、次月へ遷移するボタンを含むカレンダーです。


関連記事

今回の記事は、だいぶ前(6年前!)に書いた以下の記事の派生です。

最近Webの仕事をめっきりやっていないので今風のコードは書けないのですが…! 過去の記事を活かして「私だったらこうやって書くかな~」という内容ですので、どうぞ参考程度にご覧ください。

完成予想図

ブラウザで見るとこのような形になるものを想定します。CSSは前の記事をご参照ください。

上部に出力している「クリックされた日付」は動作確認用なので運用時は不要です。この日付がカレンダーに含まれていれば、そこが黄色くなります。日付をクリックされずにページが読み込まれた場合(初回読み込み時など)は、この日付は「本日」が適用されます。

「クリックされた日付」は、初回読み込み時に「本日」が適用されたのち、カレンダー内のいずれかの日付をクリックすることで日付情報が上書きされます。また、次にカレンダー内の日付をクリックするまで、ひとつ前の日付情報を保持します。そのため、保持している「クリックされた日付」と、「カレンダー出力する年月」が一致しないということも起こります。

たとえば、「2020/10/24」を保持したまま「<<」ボタンを押して「2010/09」のカレンダーに遷移したとき、黄色の日付は現れません。そのまま「>>」ボタンで「2010/10」のカレンダーに遷移すれば、保持されている「2020/10/24」に黄色が付きます。

このあたり、「月が変わったならその月の1日を対象にしたい」とか「ひとつ前の月の同じ日を対象にしたい」とかあるかもしれませんので、そのあたりはご自由にカスタマイズしてみてください。

出力したいhtml

というわけで、どんな形のhtmlを出力させたいのか考えてみます。

ハイライトしてあるのが、前月・次月のボタン出力部分です。カレンダーとして出力させたい年月の情報とともに保持している日付情報も組み込みます。

カレンダーを出力する関数

上記のhtmlを出力する関数です。

カレンダー出力する「年」と「月」、それと「クリックされた日付」の情報を引数として持ってきているので、それを計算したりくっつけたりして前月、次月のボタンを作成しています。

利用する

クリックされたボタンの情報から、カレンダー出力する「年」「月」、それと「日付情報」を取得して、関数に引き渡して出力させます。

クリックされた値を持っている場合、「*」が含まれていたら「前月」もしくは「次月」がクリックされたことになるので、対象の「年」「月」「日付情報」を取り出します。「*」が含まれていなければ日付がクリックされたことになるので、その日付から「年」「月」を算出します。

クリックされた値がない(初回読み込み時など)場合は、本日の日付から算出します。

こんな感じで動くのではないかと思います!

公開日:2020/10/24

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)