回答編集履歴
7
コードの修正
test
CHANGED
@@ -8,9 +8,7 @@
|
|
8
8
|
|
9
9
|
$option_month_list = range(1, 12);
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
if(!empty($_GET['show_submit'])) {
|
11
|
+
if($_SERVER['REQUEST_METHOD'] === 'GET' && !empty($_GET['show_submit'])) {
|
14
12
|
|
15
13
|
$choosed_year = (int)$_GET['year'];
|
16
14
|
|
@@ -50,7 +48,7 @@
|
|
50
48
|
|
51
49
|
<?php foreach ($option_year_list as $option_year): ?>
|
52
50
|
|
53
|
-
<option value="<?=h($option_year)?>" <?php if($option_year === $choosed_year) echo('selected="selected"'); ?>>
|
51
|
+
<option value="<?=h($option_year)?>" <?php if(!empty($choosed_year) && ($option_year === $choosed_year)) echo('selected="selected"'); ?>>
|
54
52
|
|
55
53
|
<?=h($option_year)?>
|
56
54
|
|
@@ -64,7 +62,7 @@
|
|
64
62
|
|
65
63
|
<?php foreach ($option_month_list as $option_month): ?>
|
66
64
|
|
67
|
-
<option value="<?=h($option_month)?>" <?php if($option_month === $choosed_month) echo('selected="selected"'); ?>>
|
65
|
+
<option value="<?=h($option_month)?>" <?php if(!empty($choosed_month) && ($option_month === $choosed_month)) echo('selected="selected"'); ?>>
|
68
66
|
|
69
67
|
<?=h($option_month)?>
|
70
68
|
|
@@ -82,7 +80,7 @@
|
|
82
80
|
|
83
81
|
ini_set('display_errors',1); //エラー表示
|
84
82
|
|
85
|
-
if(!empty($_GET)) {
|
83
|
+
if($_SERVER['REQUEST_METHOD'] === 'GET' && !empty($_GET)) {
|
86
84
|
|
87
85
|
$year=$_GET['year'];
|
88
86
|
|
@@ -162,8 +160,6 @@
|
|
162
160
|
|
163
161
|
</html>
|
164
162
|
|
165
|
-
|
166
|
-
|
167
163
|
```
|
168
164
|
|
169
165
|
|
6
追記: htmlspecialcharsの説明
test
CHANGED
@@ -18,6 +18,14 @@
|
|
18
18
|
|
19
19
|
}
|
20
20
|
|
21
|
+
|
22
|
+
|
23
|
+
function h($str) {
|
24
|
+
|
25
|
+
return htmlspecialchars($str);
|
26
|
+
|
27
|
+
}
|
28
|
+
|
21
29
|
?>
|
22
30
|
|
23
31
|
|
@@ -42,15 +50,11 @@
|
|
42
50
|
|
43
51
|
<?php foreach ($option_year_list as $option_year): ?>
|
44
52
|
|
45
|
-
<?php if($option_year === $choosed_year): ?>
|
46
|
-
|
47
|
-
<option value="<?=$option_year?>" selected="selected"
|
53
|
+
<option value="<?=h($option_year)?>" <?php if($option_year === $choosed_year) echo('selected="selected"'); ?>>
|
48
|
-
|
49
|
-
|
54
|
+
|
50
|
-
|
51
|
-
<option value="<?=$option_year?>"><?=$option_year?></option>
|
52
|
-
|
53
|
-
<?
|
55
|
+
<?=h($option_year)?>
|
56
|
+
|
57
|
+
</option>
|
54
58
|
|
55
59
|
<?php endforeach; ?>
|
56
60
|
|
@@ -60,15 +64,11 @@
|
|
60
64
|
|
61
65
|
<?php foreach ($option_month_list as $option_month): ?>
|
62
66
|
|
63
|
-
<?php if($option_month === $choosed_month): ?>
|
64
|
-
|
65
|
-
|
67
|
+
<option value="<?=h($option_month)?>" <?php if($option_month === $choosed_month) echo('selected="selected"'); ?>>
|
66
|
-
|
67
|
-
|
68
|
+
|
68
|
-
|
69
|
-
<option value="<?=$option_month?>"><?=$option_month?></option>
|
70
|
-
|
71
|
-
<?
|
69
|
+
<?=h($option_month)?>
|
70
|
+
|
71
|
+
</option>
|
72
72
|
|
73
73
|
<?php endforeach; ?>
|
74
74
|
|
@@ -232,6 +232,14 @@
|
|
232
232
|
|
233
233
|
|
234
234
|
|
235
|
+
サンプルコード内で、
|
236
|
+
|
237
|
+
h()で囲んである部分がありますが、
|
238
|
+
|
239
|
+
phpをhtmlに出力する際は、いつも囲む必要があるようです。
|
240
|
+
|
241
|
+
|
242
|
+
|
235
243
|
後、$_GETや$_POSTを利用する際は、!emptyで確認してから、
|
236
244
|
|
237
245
|
処理しないと、初回読み込み時にエラーが出ます。
|
5
追記:注意点
test
CHANGED
@@ -229,3 +229,15 @@
|
|
229
229
|
<?php endforeach; ?>
|
230
230
|
|
231
231
|
```
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
後、$_GETや$_POSTを利用する際は、!emptyで確認してから、
|
236
|
+
|
237
|
+
処理しないと、初回読み込み時にエラーが出ます。
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
後、表示ボタンを押すと、年月の数字が戻ってしまうようになっていたので、
|
242
|
+
|
243
|
+
入力数字を維持するようにしてあります。見てみてください。
|
4
不必要な英語を日本語へ修正
test
CHANGED
@@ -188,7 +188,7 @@
|
|
188
188
|
|
189
189
|
**>>(3) プルダウンメニューの[年]をfor文で入れたいが方法がわからない。**
|
190
190
|
|
191
|
-
|
191
|
+
私が書いたサンプルコードでは、foreachを使用しました。
|
192
192
|
|
193
193
|
phpはhtmlに埋め込めるので、
|
194
194
|
|
@@ -198,7 +198,7 @@
|
|
198
198
|
|
199
199
|
|
200
200
|
|
201
|
-
|
201
|
+
サンプルコードでは、短く書ける書き方を使用しています。
|
202
202
|
|
203
203
|
|
204
204
|
|
3
追記:質問への回答
test
CHANGED
@@ -165,3 +165,67 @@
|
|
165
165
|
|
166
166
|
|
167
167
|
```
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
**>>(1) (日数を考慮した部分を除外)動作が不安定であるので、どの部分がどうおかしいのか見てほしい。**
|
174
|
+
|
175
|
+
うるう年判定の部分で構文エラーが出てました。
|
176
|
+
|
177
|
+
自動構文チェック機能付きのエディターを使えば、解決すると思います。
|
178
|
+
|
179
|
+
おすすめは、vsc(visual studio code)です!
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
**>>(2) 指定した月の日数の記述方法がわからず、if文でやってみたがうまくいかない。うるう年も考慮されない。**
|
184
|
+
|
185
|
+
これは(1)と同じ問題だと思いますので、(1)を解決すれば、いいと思います。
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
**>>(3) プルダウンメニューの[年]をfor文で入れたいが方法がわからない。**
|
190
|
+
|
191
|
+
sample codeでは、foreachを使用しました。
|
192
|
+
|
193
|
+
phpはhtmlに埋め込めるので、
|
194
|
+
|
195
|
+
埋め込み方を知れば、解決すると思います。
|
196
|
+
|
197
|
+
https://www.flatflag.nir87.com/for-273
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
sample codeでは、短く書ける書き方を使用しています。
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
```php
|
206
|
+
|
207
|
+
<?php echo('hello!'); ?>
|
208
|
+
|
209
|
+
<?='hello'?>//上と動きは、同じです。echo短縮の書き方です。
|
210
|
+
|
211
|
+
```
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
```php
|
216
|
+
|
217
|
+
<?php foreach($sample_arr as $sample_val) { ?>
|
218
|
+
|
219
|
+
<?=$sample_val?>
|
220
|
+
|
221
|
+
<?php } ?>
|
222
|
+
|
223
|
+
//上のコードは、下のようにも書くことが出来ます。
|
224
|
+
|
225
|
+
<?php foreach($sample_arr as $sample_val): ?>
|
226
|
+
|
227
|
+
<?=$sample_val?>
|
228
|
+
|
229
|
+
<?php endforeach; ?>
|
230
|
+
|
231
|
+
```
|
2
コードの修正
test
CHANGED
@@ -17,26 +17,6 @@
|
|
17
17
|
$choosed_month = (int)$_GET['month'];
|
18
18
|
|
19
19
|
}
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
class CalenderUtilities
|
24
|
-
|
25
|
-
{
|
26
|
-
|
27
|
-
public function isLeapYear($year): bool
|
28
|
-
|
29
|
-
{
|
30
|
-
|
31
|
-
return (($year % 4 === 0) && ($year % 100 !== 0)) || ($year % 400 === 0);
|
32
|
-
|
33
|
-
}
|
34
|
-
|
35
|
-
}
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
$calender_utilities = new CalenderUtilities();
|
40
20
|
|
41
21
|
?>
|
42
22
|
|
@@ -114,7 +94,7 @@
|
|
114
94
|
|
115
95
|
if($month==2){
|
116
96
|
|
117
|
-
if($
|
97
|
+
if((($year % 4 === 0) && ($year % 100 !== 0)) || ($year % 400 === 0)) {
|
118
98
|
|
119
99
|
$lastday=29;
|
120
100
|
|
@@ -182,4 +162,6 @@
|
|
182
162
|
|
183
163
|
</html>
|
184
164
|
|
165
|
+
|
166
|
+
|
185
167
|
```
|
1
コード修正
test
CHANGED
@@ -19,6 +19,24 @@
|
|
19
19
|
}
|
20
20
|
|
21
21
|
|
22
|
+
|
23
|
+
class CalenderUtilities
|
24
|
+
|
25
|
+
{
|
26
|
+
|
27
|
+
public function isLeapYear($year): bool
|
28
|
+
|
29
|
+
{
|
30
|
+
|
31
|
+
return (($year % 4 === 0) && ($year % 100 !== 0)) || ($year % 400 === 0);
|
32
|
+
|
33
|
+
}
|
34
|
+
|
35
|
+
}
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
$calender_utilities = new CalenderUtilities();
|
22
40
|
|
23
41
|
?>
|
24
42
|
|
@@ -48,9 +66,11 @@
|
|
48
66
|
|
49
67
|
<option value="<?=$option_year?>" selected="selected"><?=$option_year?></option>
|
50
68
|
|
51
|
-
<?php e
|
69
|
+
<?php else: ?>
|
52
70
|
|
53
71
|
<option value="<?=$option_year?>"><?=$option_year?></option>
|
72
|
+
|
73
|
+
<?php endif; ?>
|
54
74
|
|
55
75
|
<?php endforeach; ?>
|
56
76
|
|
@@ -64,9 +84,11 @@
|
|
64
84
|
|
65
85
|
<option value="<?=$option_month?>" selected="selected"><?=$option_month?></option>
|
66
86
|
|
67
|
-
<?php e
|
87
|
+
<?php else: ?>
|
68
88
|
|
69
89
|
<option value="<?=$option_month?>"><?=$option_month?></option>
|
90
|
+
|
91
|
+
<?php endif; ?>
|
70
92
|
|
71
93
|
<?php endforeach; ?>
|
72
94
|
|
@@ -92,7 +114,7 @@
|
|
92
114
|
|
93
115
|
if($month==2){
|
94
116
|
|
95
|
-
if(
|
117
|
+
if($calender_utilities->isLeapYear($year)) {
|
96
118
|
|
97
119
|
$lastday=29;
|
98
120
|
|