PHPでカレンダーの作成をしております。
その中で次月、前月のようなボタンを押すとそのカレンダーの情報に移るようプログラムを組みたいです。
ループ処理により年間分のカレンダー情報を表示と考えているのですが、そのような仕組みを作った機械がなく、
調べては見たのですが、なかなか機能しないため、お力をお借りしたく質問させて頂いてます。
PHP
1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Kento Calendar</title> 5 </head> 6 7 <body> 8 9<?php 10$now_year = date("Y"); 11$now_month = date("m"); 12$now_day = date("j"); 13$weekday = array( "Sunday", "Monday", "Thuseday", "Wednesday", "Thursday", "Friday", "Saturday" ); 14 15$fir_weekday = date( "w", mktime( 0, 0, 0, $now_month, 1 , $now_year ) ); 16///////////////////////////////////setting valuable 17echo '<table border="1" cellspacing="0" cellpadding="0" style="text-align:center;">'; 18// 見出し部分<caption>タグ出力 19echo "<caption style=\"color:black; font-size:14px; padding:0px;\">" 20.$now_month."/".$now_year." 21 </caption>\n";////////////////////////caption 22 23echo "<tr>\n"; 24 25$i = 0; // カウント値リセット 26while( $i <= 6 ){ // 曜日分ループ 27 28/////////////////////////////////////style sheet 29 if( $i == 0 ){ // 日曜日の文字色 30 $style = "#C30"; 31 } 32 else if( $i == 6 ){ // 土曜日の文字色 33 $style = "#03C"; 34 } 35 else{ // 月曜~金曜日の文字色 36 $style = "black"; 37 } 38 echo "\t<th style=\"color:".$style."\">".$weekday[$i]."</th>\n"; 39 $i ++; //カウント値+1 40} 41/////////////////////////////////////end of style sheet 42// 行の変更 43echo "</tr>\n"; 44echo "<tr>\n"; 45 46$i = 0; 47while( $i != $fir_weekday ){ 48 echo "\t<td> </td>\n"; 49 $i ++; 50} 51 52// 今月の日付が存在している間ループする 53for( $day=1; checkdate( $now_month, $day, $now_year ); $day++ ){ 54 55 //曜日の最後まできたらカウント値(曜日カウンター)を戻して行を変える 56 if( $i > 6 ){ 57 $i = 0; 58 echo "</tr>\n"; 59 echo "<tr>\n"; 60 } 61 62///////////////////////////////////////style sheet 63 if( $i == 0 ){///the color of sunday 64 $style = "#C30"; 65 66} else if( $i == 6 ){ //the color of saturday 67 $style = "#03C"; 68 69} else { //the color of monday to friday 70 $style = "black"; 71 } 72 73 // if it is today , it gets color 74 if( $day == $now_day ){ 75 $style = $style."; background:silver"; 76 } 77//////////////////////////////////////end of style sheet 78 79 // 日付セル作成とスタイルシートの挿入 80 echo "\t<td style=\"color:".$style.";\">".$day."</td>\n"; 81 82 $i++; //カウント値(曜日カウンター)+1 83} 84 85while( $i < 7 ){ //残りの曜日分空白( )で埋める 86 echo "\t<td> </td>\n"; 87 $i++; 88} 89echo "</tr>\n"; 90echo "</table>\n"; 91 92///////////////////////////////////////////////////////previous and next month 93?> 94 95<?php 96 $ym = (isset($_GET["ym"]))? $_GET["ym"] : date("Ym"); 97 98 $lastmonth = date("Ym",strtotime($ym."01"." -1 month ")); 99 $nextmonth = date("Ym",strtotime($ym."01"." +1 month ")); 100 101 echo '<a href="ex5-2.php?ym='.$lastmonth.'">Last month</a>'; 102 echo "<br>"; 103 echo '<a href="ex5-2.php?ym='.$nextmonth.'">Next month</a>'; 104 105 $this_month_days = date("t",strtotime($ym."01"));//当月の日数を取得。 106 ?> 107 108</body> 109</html> 110
コードブロックは囲ったらできます(難しければコード部分のみ選択して<code>ボタンを押すと良い)
```
ここにコードのみ投稿
```
申し訳ありません。
コード内に入れたつもりだったのですが、入ってないですね。
再度編集いたします。
PCであれば投稿画面右側にプレビューが出てるので確認して調整すると良いです
承知いたしました。
今ほど修正いたしました。
ちょっと細かくて申し訳ないですが「コード」 という文字は実際のコードにはないでしょうしDOCTYPE宣言の冒頭の<が切れてますね…
大変失礼いたしました。ただいま修正いたしました!
また、ご回答ありがとうございます!
とても参考になります。
そこで試したところ、月変更ボタンを押すと別ファイルに移動するような作りかと認識しているのですが、
年間分プログラムでカレンダーを表示したいです。
私の認識違いでしたらご指摘頂けると幸いです。
元々の私の質問内容に詳細がかけており大変申し訳ありません。
回答の方にコメントつけていただければと。
回答1件
あなたの回答
tips
プレビュー