1) ? $year : $year-1); $prev_m = sprintf('%02d', (($month > 1) ? $month-1 : 12)); $year = strval($year); $month = sprintf('%02d', $month); $today = date('Y/m/d'); //*--- DB登録 ---*// require_once (APPLICATION_ROOT . '/common/dbcontrol/dac.inc'); $objDac = new dac($objCnc); //旧暦情報の取得 $data_ary = array(); $sql = "SELECT to_char(date, 'yyyy/mm/dd') AS solar_date, *" . " FROM tbl_lunar_calendar" . " WHERE to_char(date, 'yyyymm') = '" . $year . $month . "'" . " ORDER BY date"; if (!$objDac->execute($sql)) { die("【DB接続エラー】旧暦情報の取得に失敗しました。"); } //旧暦データ配列に格納 while ($objDac->fetch()) { $data_ary[$objDac->fld['solar_date']] = $objDac->fld; } //DB接続をクローズする $objDac->db_con->close(); //*--- 日にちセルテンプレートの読み込み ---*// $fp = fopen(TPL_PATH_DAYCELL, "r"); $cellStr = fread($fp, filesize(TPL_PATH_DAYCELL)); fclose($fp); // 文字コード変換 $encode = mb_detect_encoding($cellStr, "ASCII,JIS,UTF-8,SJIS-WIN,SJIS,EUCJP-WIN,EUC_JP"); if ($encode != "UTF-8") $cellStr = mb_convert_encoding($cellStr, "UTF-8", $encode); //*--- カレンダー生成 ---*// $cal_ary = array(); //表示月1日の曜日を求める・・・曜日引数 ("日0","月1","火2","水3","木4","金5","土6") $intFstDay = date("w", mktime(0, 0, 0, $month, 1, $year)); //表示月の末日を求める $intLastDay = date("t", mktime(0, 0, 0, $month, 1, $year)); //カレンダー配列にセット $intDays = 1; //MAX6週 for ($idxWeek = 0; $idxWeek < 6; $idxWeek++) { //6週目に日にちがなければ飛ばす if ($intDays > $intLastDay) break; //週7日間 for ($idxWday = 0; $idxWday < 7; $idxWday++) { if ($intFstDay <= $idxWday && $intLastDay >= $intDays) { $cal_ary[$idxWeek][$idxWday] = $intDays; $intDays++; } else{ $cal_ary[$idxWeek][$idxWday] = ""; } } $intFstDay = -1; } //カレンダー部分のHTML生成 $cal_str = ''."\n"; $cal_str .= ''."\n"; $cal_str .= ''."\n"; $cal_str .= ''."\n"; $cal_str .= ''."\n"; $cal_str .= ''."\n"; $cal_str .= ''."\n"; $cal_str .= ''."\n"; $cal_str .= ''."\n"; $cal_str .= ''."\n"; foreach ($cal_ary as $week_ary) { $cal_str .= ''."\n"; foreach ($week_ary AS $idxWday => $day) { //曜日カラー $week_sel_class = ""; //日曜 if ($idxWday == 0) { $week_sel_class = ' class="sun"'; } //土曜 elseif ($idxWday == 6) { $week_sel_class = ' class="sat"'; } //今日 $Ymd = sprintf("%4d/%02d/%02d", $year, $month, $day); // if ( $Ymd == $today ) { // $week_sel_class = ' class="today"'; // } //空白セル if ($day == ""){ $cal_str .= ''."\n"; } //旧暦情報セル else { $cal_str .= ''; // $cal_str .= $day; //旧暦情報をセット if (isset($data_ary[$Ymd]) && is_array($data_ary[$Ymd])) { $tmpStr = $cellStr; //新暦日付セット $tmpStr = str_replace('', htmlDisplay($day), $tmpStr); foreach($data_ary[$Ymd] as $k => $v) { if (($inStr = getMidString($tmpStr, '', '')) === FALSE) continue; //値が空なら表示なし if ($v == "") { $repStr = ""; //値があれば置き換える } else { //月形画像は画像ディレクトリのパスとファイル名、拡張子を付加する if ($k == "moon_shape") { $repStr = str_replace('', MOONSHAPE_IMG_DIR.MOONSHAPE_IMG_NAME.$v.MOONSHAPE_IMG_TYPE, $inStr); } else { $repStr = str_replace('', htmlDisplay($v), $inStr); } } $tmpStr = str_replace(''.$inStr.'', $repStr, $tmpStr); } $cal_str .= $tmpStr."\n"; } $cal_str .= ''."\n"; } } $cal_str .= ''."\n"; } $cal_str .= '

日

月

火

水

木

金

土

 
'."\n"; //*--- 置換データの作成 ---*// $rep_ary = array(); //表示年 $rep_ary['year'] = $year; //和暦 $rep_ary['jp_year'] = convertJpYear($year, $month); //表示月 $rep_ary['month'] = sprintf('%d', $month); $rep_ary['eng_month'] = $eng_month_name_ary[sprintf('%d', $month)]; //陰暦 $rep_ary['jp_month'] = $jp_month_name_ary[sprintf('%d', $month)]; $rep_ary['jp_month_kana'] = $jp_month_kana_ary[sprintf('%d', $month)]; //前の月へのリンク $rep_ary['prev_month_link'] = '前月'; //次の月へのリンク $rep_ary['next_month_link'] = '次月'; //年月プルダウン $select_year = ''; $rep_ary['select_year'] = $select_year; $select_month = ''; $rep_ary['select_month'] = $select_month; //カレンダー $rep_ary['calendar'] = $cal_str; //*--- テンプレートの読み込み ---*// $fp = fopen(TPL_PATH_CALENDAR, "r"); $htmlStr = fread($fp, filesize(TPL_PATH_CALENDAR)); fclose($fp); // 文字コード変換 $encode = mb_detect_encoding($htmlStr, "ASCII,JIS,UTF-8,SJIS-WIN,SJIS,EUCJP-WIN,EUC_JP"); if ($encode != "UTF-8") $htmlStr = mb_convert_encoding($htmlStr, "UTF-8", $encode); //*--- 文字列置換 ---*// foreach($rep_ary as $k => $v) { $htmlStr = str_replace('', $v, $htmlStr); } // ページの表示 print $htmlStr; ?>