<?php
$month_list = array(
"01", "02", "03", "04", "05", "06",
"07", "08", "09", "10", "11", "12"
);
//月数加算 +1
function addMonth($date, $add_month) {
// 年月日別に分離
$year = date('Y', strtotime($date));
$month = date('n', strtotime($date));
$day = "01";
// 年を跨ぐ場合
if ($month + $add_month > 12) {
$year++;
$month = $month + $add_month - 12;
} else {
$month = $month + $add_month;
}
// 算出結果の日付を返す
if (checkdate($month, $day, $year)) {
return date('Y-m-d', strtotime(sprintf('%04d-%02d-%02d', $year, $month, $day)));
} else {
// 2月31日などになった場合、月末の日付を返す
return date('Y-m-d', strtotime(sprintf('%04d-%02d-01 -1 day', $year, ($month+1))));
}
}
//月数カウント
function count_m($f,$t){
$date1=strtotime($f);
$date2=strtotime($t);
$month1=date("Y",$date1)*12+date("m",$date1);
$month2=date("Y",$date2)*12+date("m",$date2);
$diff = $month1 - $month2;
return $diff + 1;
}
//年月形状変更 2016-02→20162
function c_m($from2,$to2){
$from2 = $from2."-01";
$to2 = $to2."-01";
$m_list = array();
for($i=0; $i < count_m($from2,$to2); $i++){
$aa = addMonth($to2, $i);
$bb = explode("-",$aa);
$cc = $bb[0] * 100 + $bb[1];
$m_list[$i] = $cc;
}
return $m_list;
}
//月部分抜き取り 201602→2
function month_get($list){
$list3 = array();
foreach($list as $key=>$val){
$list3[$key] = substr($val, 4);
}
return $list3;
}
if(isset($_POST["submit"])){
$option = $_POST["option"];
$month1 = $_POST["month1"];//開始
$date1 = $_POST["date1"];
$month2 = $_POST["month2"];//終了
$date2 = $_POST["date2"];
if(($date1 == 10) or ($date1 == 11) or ($date1 == 12)){
}else{
$date1 = "0"."$date1";
}
if(($date2 == 10) or ($date2 == 11) or ($date2 == 12)){
}else{
$date2 = "0"."$date2";
}
$month1 = $month1."-".$date1;//"2016-02"
$month2 = $month2."-".$date2;//"2016-03"
$search_month = c_m($month2,$month1);
$month_name = month_get($search_month);
}
?>
<html>
<head>
<meta charset='utf-8'>
<title>集計画面test</title>
</head>
<body>
<form method ="post" action="testdb.php">
<table border="1">
<tr>
<td>集計期間</td>
<td>
<SELECT name="month1">
<?php for($y=2013;$y<="2050";$y++):?>
<OPTION value="<?php echo $y; ?>" <?php if(isset($month1) && $month1 == $y ){ echo "selected"; } ?>>
<?php echo $y; ?>
</OPTION>
<?php endfor; ?>
</SELECT>年
<SELECT name="date1">
<?php foreach($month_list as $key => $value): ?>
<OPTION value="<?php echo $key + 1; ?>" <?php if(isset($date1) && $date1 == $value ){ echo "selected"; } ?>>
<?php echo $value; ?>
</OPTION>;
<?php endforeach ?>
</SELECT>月
~
<SELECT name="month2">
<?php for($y=2013;$y<="2050";$y++):?>
<OPTION value="<?php echo $y; ?>" <?php if(isset($month2) && $month2 == $y ){ echo "selected"; } ?>>
<?php echo $y; ?>
<?php endfor; ?>
</SELECT>年
<SELECT name="date2">
<?php foreach($month_list as $key => $value): ?>
<OPTION value="<?php echo $key + 1; ?>" <?php if(isset($date2) && $date2 == $value ){ echo "selected"; } ?>>
<?php echo $value; ?>
</OPTION>;
<?php endforeach ?>
</SELECT>月
</td>
</tr>
<tr>
<td>条件</td>
<td>
<select name="option">
<option value="登録" <?php if(isset($option) && $option == "登録"){ echo "selected"; } ?> >登録</option>
<option value="稼動" <?php if(isset($option) && $option == "稼動"){ echo "selected"; } ?> >稼動</option>
</select>
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="OK" name="submit">
</td>
</tr>
</table>
</form>
</body>
</html>
上記のコードで入力フォームを作成したのですが問題が発生しました。
集計期間のセレクトボックスの初期値を当年(2016年)で開始期間の月を当月-3(5月なら初期値は2月)、終了期間を当月+3(5月なら初期値は8月)にしたいのですがどうしてもうまくいきません。
すみませんが良い修正案がありましたらよろしくお願いします。