php カレンダー コード、php カレンダー コントロール、php カレンダー プログラム
まず、この php カレンダー コードの実装アイデアについて説明し、問題点を分析しましょう
PHP でのカレンダーの実装は、主に PHP の強力な時間と機能に依存します。 date() と mktime() を含めて、PHP で最も重要な BT 関数は date() であることがわかりました。私はそれがデータ操作とファイル管理のための関数の集まりだと思っていました。カレンダー機能を実装するには、まず最初に行う必要があります。原理を理解すれば、プログラムは簡単に作成できます。
各月の日に対応する日が変わるため、最初は非常に複雑に感じるかもしれません。うるう年などもあります。しかし、注意深く分析すると、カレンダーの実装は実際にはそれほど複雑ではないことがわかります。プログラミングの便宜と国際的な習慣との同期のために、カレンダーの最も基本的な要素は間違いなく日曜日を開始点として使用します。週と土曜日を終了点とします。この実装は比較的単純で、ループを使用して配列を出力するだけです。残る主な問題は日付の表示です。
日付の表示には主にいくつかの質問が必要です:
1.今月は何日ですか?
1 月の週数については、これは基本的に考慮する必要はありません。日付表示では新しい週の処理 (つまり、通常は改行が必要です) を使用しているため、最初にカレンダーを見つけてそれを調べることができます。 31 日を 1 行で出力する場合は、各月の週数を使用する必要はなく、特定の日を判断するだけで十分です。HTML を使用する工夫をすれば、次のように出力できます。日曜日の日付を表示する前に改行を行うと、週番号を使用して判断するよりもはるかに便利です。 言うまでもなく、最初の質問の意味は非常に簡単です。このデータは、date() 関数と mktime() 関数を呼び出すことで取得できます。次の呼び出しを使用できます:
date("t",mktime(0 ,0,0,$month,1,$year) );
ここで、mktime(0,0,0,$month,$day,$year) の最初の 3 つの 0 は時間、分、秒を識別します。使用する場合は直接 0 を入力し、次の 3 つのパラメータは次のとおりです。この関数は、UNIX 形式でタイムスタンプを返します。これには、基本的に、処理を続行するために date() 関数を使用する必要があります。この関数には、多くの書式設定マークが含まれています。 "t" が付いたもの... 詳細については、PHP ドキュメントを参照してください。 date("t",mktime(0,0,0,$ month,$day,$year) returns mktime( ) は数値を返します。タイムスタンプで特定される月の日数 (28 日から 31 日まで)。ここでは、1 日などの特定の日付を指定する必要があることに注意してください。 2 番目の質問については、毎月 1 日であるため、これも非常に重要です。週数はすべて同じではないため、カレンダー出力では、各月 1 日の週数が正しいことを確認するために、各月 1 日の前にスペースを出力する必要があります (たとえば、特定の月の 1 日の場合)は 4 日です。日曜日に到着する必要があります。スペースは水曜日の対応する位置に出力されます。このデータは、date() 関数と mktime() 関数を使用して取得されます:
date("w",mktime(0,0, 0,$month,1,$year))
この一連の関数 返されるのは各月 1 日の週番号で、戻り値の範囲は 0 から 6、つまり日曜日から土曜日を意味します。 , カレンダーに必要な基本データが完成したので、カレンダーの実装を開始できます
最初に、HTML フォームを使用してこれを実装するさまざまな方法があります。そうすると、フォームのアクションは $SCRIPT_NAME となり、メソッドは post になります。
月と年を取得した後、最初にカレンダーのメイン テーブル部分を出力することができます。日曜日から土曜日までの週番号を出力する配列。次に、すべての日付の出力を開始します。
for($day=1;$day<=date(" t",mktime(0,0,0) ,$month,1,$year));$day++)
{....}
中括弧にはいくつかの条件判定が含まれています。最初は、ループを通じて月の最初の日の曜日を取得するものです。前の週番号の対応する位置の前にスペースを出力します。 2 番目の判断は、特定の日が日曜日であるかどうかを判断することです。
<?phpheader("content-type:text/html;charset=utf-8");?><meta http-equiv="content-type" content="text/html;charset=utf-8"><style>form{ margin:0px; padding:0px;}td{ text-align:center; width:80px;}</style><?phpif(!empty($_GET)){ $year = $_GET['year']; $month = $_GET['month'];}if(empty($year)){ $year = date('Y');}if(empty($month)){ $month = date('m');}$start_weekday = date('w',mktime(0,0,0,$month,1,$year));//echo $start_weekday;$days = date('t',mktime(0,0,0,$month,1,$year));//echo $days;$week = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');$i = 0;$k = 1;$j = 0;echo '<table border = "1">';echo '<tr><td colspan = 7 style = "text-align:center">'.$year.'年'.$month.'月'.'</td></tr>';echo '<tr>';for($i = 0;$i < 7;$i++){ echo '<td>'.$week[$i].'</td>';}echo '</tr>';echo '<tr>';for($j = 0;$j < $start_weekday;$j++){ echo '<td style="color:#FFFFFF">'.$j.'</td>';}while($k <= $days){ if($k == date('d')){ echo '<td style="color:red">'.$k.'</td>'; }else{ echo '<td>'.$k.'</td>'; } if(($j+1) % 7 == 0){ echo '</tr><tr>'; } $j++; $k++;}while($j % 7 != 0){ echo '<td style="color:#FFFFFF">'.$j.'</td>'; $j++;}echo '</tr>';echo '<tr>';echo "<td><a href=?".lastYear($year,$month).">".'<<'.'</a></td>';echo "<td><a href=?".lastMonth($year,$month).">".'<'.'</a></td>';echo '<td colspan = 3 style = "text-align:center">';echo '<form name = "myform" method = "GET">';echo '<select name = year >';for($start_year = 1970;$start_year<2039;$start_year++){ echo '<option value ='. $start_year.'>'.$start_year.'</option>';}echo '</select>'.'年';echo '<select name = month>';for($start_month = 1;$start_month<=12;$start_month++){ echo '<option value = '.$start_month.'>'.$start_month.'</option>';}echo '</select>';echo '月';echo '<input type = "submit" name = "search" value = "查询">';echo '</form>';echo '</td>';echo "<td><a href=?".nextYear($year,$month).">".'>>'.'</a></td>';echo "<td><a href=?".nextMonth($year,$month).">".'>'.'</a></td>';echo '</tr>';echo '</table>';function lastYear($year,$month){ $year = $year-1; return "year=$year&month=$month";}function lastMonth($year,$month){ if($month == 1){ $year = $year -1; $month = 12; }else{ $month--; } return "year=$year&month=$month";}function nextYear($year,$month){ $year = $year+1; return "year=$year&month=$month";}function nextMonth($year,$month){ if($month == 12){ $year = $year +1; $month = 1; }else { $month++; } return "year=$year&month=$month";}?>