質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

4261閲覧

PHPのセレクトボックスの初期値の設定について(PHPのバージョンは5.3です。)

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/05/19 14:57

<?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>月 &nbsp;~&nbsp; <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月)にしたいのですがどうしてもうまくいきません。

すみませんが良い修正案がありましたらよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/05/19 18:15

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。また、「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」をお書きください。
guest

回答2

0

コードが長いうえにインデントも無いので全コード読んでいませんが、当月-3月と当月+3月を取得したいのですよね?
そのようなサンプルはネット上にたくさん落ちていますので探してみてください。

当月-3月の年月を取得する例は

PHP

1<?php 2 $year = 2016; 3 $month = 5; 4 echo date("Ym", mktime(0, 0, 0, $month - 3, 1, $year)); 5?>

こんな感じです。これで201502が表示されます。
ネットでdateやmktimeなり調べてみてください。

投稿2016/05/20 05:48

MinakoIwaki

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

年なのにmonth、月なのにdateと言うネーミングしてたりするので
まずはそこから修正しないと、、いけないかと。

投稿2016/05/19 15:20

kurosawa

総合スコア780

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問