ホームページ  >  記事  >  バックエンド開発  >  PHP自作カレンダー_PHPチュートリアル

PHP自作カレンダー_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:18:101316ブラウズ

PHP カスタマイズカレンダー

1. 計算データ
1. 新しいカレンダークラスを作成します
2. 2 つのドロップダウン ボックスのデータを初期化します (年と月)。
3.検索する年と月を初期化します
4. CSSと日数を含むカレンダーの毎日のデータ情報を計算します
コードをコピー
require_once 'calendar.php';
$util = 新しいカレンダー();
$years = array(2012, 2013, 2014, 2015, 2016);//カスタマイズされた年の選択
$months = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);//月の配列
//投稿の年データを取得します
if(empty($_POST['ddlyear'])) {
$year = date('Y');
}else {
$year = $_POST['ddlyear'];
}
//投稿の月次データを取得します
if(empty($_POST['ddlMonth'])) {
$month = date('n');
}else {
$month = $_POST['ddlMonth'];
}
$calendar = $util->threshold($year, $month);//各境界値を取得します
$caculate = $util->caculate($calendar);// カレンダーの日数とスタイルを計算します
$draws = $util->draw($caculate);//テーブルを描画し、テーブルに tr と td を設定します
?>
コードをコピー
2.HTML表示
1. 休日の背景色が異なり、現在の検索年月以外の日の文字色も異なります
2. div の年と月のドロップダウン ボックスを初期化し、現在検索する年と月を選択します
3. データが計算され、どの td がどの tr に属するかがわかります。テーブルを印刷するだけです。
コードをコピー
<名前="ddl年"を選択>
" データ?>
<表の幅="100%" セル間隔="0" クラス="表カレンダー">
~ ~ ~ ~ ~ ~ ~
~ ~
コードをコピー
3. カレンダークラス
1. 閾値メソッド、カレンダーの各境界値を生成します
1) 今月の合計日数を計算します
2) 今月の初日と末日、それぞれが何曜日であるかを計算します
3) カレンダーの最初の日付と最後の日付を計算します
コードをコピー
/**
* @deprecated カレンダーの各境界値を生成します
* @param string $year
* @param string $month
* @return 配列
*/
関数のしきい値($year, $month) {
$firstDay = mktime(0, 0, 0, $month, 1, $year);
$lastDay = strtotime('+1 か月 -1 日', $firstDay);
//日数を取得します
$days = date("t", $firstDay);
// 最初の日が何曜日であるかを取得します
$firstDayOfWeek = date("N", $firstDay);
//最終日が何曜日であるかを取得します
$lastDayOfWeek = date('N', $lastDay);
//前月の末日
$lastMonthDate = strtotime('-1 日', $firstDay);
$lastMonthOfLastDay = date('d', $lastMonthDate);
//翌月の初日
$nextMonthDate = strtotime('+1 day', $lastDay);
$nextMonthOfFirstDay = strtotime('+1 day', $lastDay);
// カレンダーの最初の日付
if($firstDayOfWeek == 7)
$firstDate = $firstDay;
その他
$firstDate = strtotime('-'. $firstDayOfWeek .' day', $firstDay);
//カレンダーの最後の日付
if($lastDayOfWeek == 6)
$lastDate = $lastDay;
elseif($lastDayOfWeek == 7)
$lastDate = strtotime('+6 day', $lastDay);
その他
$lastDate = strtotime('+'.(6-$lastDayOfWeek).' day', $lastDay);
配列を返す(
'days' => $days,
'firstDayOfWeek' => $firstDayOfWeek,
'lastDayOfWeek' => $lastDayOfWeek,
'lastMonthOfLastDay' => $lastMonthOfLastDay,
'firstDate' => $firstDate,
'lastDate' => $lastDate,
'年' => $年,
'月' => $month
);
}
コードをコピー
2. 計算方法、カレンダーの日数とスタイルを計算します
1) 先月の日数を計算します。月の最初の日が日曜日ではない場合は、先月の末日を基準に計算する必要があります。
2) 今月の日をトラバースし、休日の場合は特別な CSS スタイルを追加します
3) 日曜日、土曜日、営業日の3つの状況に分けて翌月の日数を計算します
コードをコピー
/**
* @author Pwstrick
* @param array 閾値法で計算した$calendarデータ
* @deprecated カレンダーの日数とスタイルを計算します
*/
関数 caculate($calendar) {
$days = $calendar['days'];
$firstDayOfWeek = $calendar['firstDayOfWeek'];// 今月の週の最初の日
$lastDayOfWeek = $calendar['lastDayOfWeek'];//今月の最終日の週
$lastMonthOfLastDay = $calendar['lastMonthOfLastDay'];// 前月の最終日
$year = $calendar['year'];
$month = $calendar['month'];
$dates = array();
if($firstDayOfWeek != 7) {
$lastDays = array();
$current = $lastMonthOfLastDay;// 前月の最終日
for ($i = 0; $i
array_push($lastDays, $current);// 前月の日数を加算します
$current--;
}
$lastDays = array_reverse($lastDays);// 逆順
foreach ($lastDays as $index => $day) {
array_push($dates, array('day' => $day, 'tdclass' => ($index ==0 ?'rest':''), 'pclass' => 'outter'));
}
}
//今月のカレンダー情報
for ($i = 1; $i
$isRest = $this->_checkIsRest($year, $month, $i);
// 休息日かどうかを判断する
array_push($dates, array('day' => $i, 'tdclass' => ($isRest ?'rest':''), 'pclass' => ''));
}
//来月のカレンダー情報
if($lastDayOfWeek == 7) {//最終日は日曜日です
$length = 6;
}
elseif($lastDayOfWeek == 6) {//最終日は土曜日です
$length = 0;
}else {
$length = 6 - $lastDayOfWeek;
}
for ($i = 1; $i array_push($dates, array('day' => $i, 'tdclass' => ($i==$length ?'rest':''), 'pclass' => 'outter')) ;
}
$dates を返します;
}
コードをコピー
3. Drawメソッド、テーブルを描画し、テーブルにtrとtdを設定します
1) tableタグを使ってデータを表示するので、ここでは各trの下にtdを配置する必要があります
2)$index % 7 == 0 テーブルの各行の最初の列を計算します
3)$index % 7 == 6 || $index == ($length-1) 各行の最後の列、または$caculateの最後のデータを計算します
4)各行の配列である$trに真ん中の行を追加します
コードをコピー
/**
* @author Pwstrick
* @param array $caculate caculate メソッドで計算されたデータ
* @deprecated テーブルを描画し、テーブルに tr と td を設定します
*/
関数draw($caculate) {
$tr = 配列();
$length = count($caculate);
$result = array();
foreach ($caculate as $index => $date) {
if($index % 7 == 0) {//最初の列
$tr = array($date);
}elseif($index % 7 == 6 || $index == ($length-1)) {
array_push($tr, $date);
array_push($result, $tr);//返されたデータに追加します
$tr = array();//配列リストをクリアします
}else {
array_push($tr, $date);
}
}
$result;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/885672.html技術記事 PHP自作カレンダー 1. データを計算する 1. 新しい Calendar クラスを作成する 2. 年と月の 2 つのドロップダウン ボックスのデータを初期化する 3. 検索する年と月を初期化する 4. カレンダーを計算する...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:DedeCMS で最も重要な 4 種類のテーブル、dedecms 4 種類のテーブル_PHP チュートリアル次の記事:DedeCMS で最も重要な 4 種類のテーブル、dedecms 4 種類のテーブル_PHP チュートリアル

関連記事

続きを見る