回答編集履歴

3

PHP回答コード全面修正

2017/09/03 12:24

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -58,19 +58,7 @@
58
58
 
59
59
  ```php
60
60
 
61
- echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == 1) ? 'selected' : '';
61
+ echo 'xxx'.($selected == "1" ? ' selected' : '');
62
-
63
- ```
64
-
65
-
66
-
67
- 冗長ですが、下記のように書いても上記と同じ結果になります。
68
-
69
-
70
-
71
- ```php
72
-
73
- (isset($_POST['NOP_1']) && $_POST['NOP_1'] == 1) ? echo 'selected' : echo '';
74
62
 
75
63
  ```
76
64
 
@@ -80,101 +68,77 @@
80
68
 
81
69
 
82
70
 
83
- 修正全文は下記になります。
71
+ 修正全文は下記になります。質問のコードでは、連想配列を用意してからHTMLに反映していましたが、下記はHTMLの中にPHPコードを組み込む形で直接コーディングしてみました。
84
72
 
85
73
 
86
74
 
87
75
  ```php
88
76
 
77
+ <?php
78
+
89
79
  //1
90
80
 
91
- //中略
81
+ //2
82
+
83
+ ?>
92
84
 
93
85
 
94
86
 
87
+ <div id="choice">
88
+
89
+ <?php
90
+
91
+ // チェックボックス値フィルター
92
+
93
+ $attributes = filter_input(INPUT_POST, 'attribute', FILTER_SANITIZE_NUMBER_INT, array('flags' => FILTER_REQUIRE_ARRAY));
95
94
 
96
95
 
97
- //2
98
96
 
99
- // PHPの閉じ「?>」を忘れず記入します。
97
+ // attribute[], NOP_x出力
98
+
99
+ for ($i=1; $i<=23; $i++) :
100
+
101
+ // セレクトボックス値フィルター
102
+
103
+ $selected = filter_input(INPUT_POST, 'NOP_'.$i, FILTER_SANITIZE_NUMBER_INT);
104
+
105
+
106
+
107
+ if (empty($attributes[$i-1])) {
108
+
109
+ $attributes[$i-1] = 0;
110
+
111
+ }
112
+
113
+ if (empty($selected)) {
114
+
115
+ $selected = 0;
116
+
117
+ }
118
+
119
+
120
+
121
+ echo ' <input type="checkbox" name="attribute[]" value="'.$i.'" id="'.$i.'"'.($attributes[$i-1] == $i ? ' checked' : '').'><label for=".$i.">A</label>'."\n";
122
+
123
+ echo ' <select name="NOP_'.$i.'">'."\n";
124
+
125
+ echo ' <option value="0">0</option>'."\n";
126
+
127
+ echo ' <option value="1"'.($selected == "1" ? ' selected' : '').'>1</options>'."\n";
128
+
129
+ echo ' <option value="2"'.($selected == "2" ? ' selected' : '').'>2</options>'."\n";
130
+
131
+ echo ' <option value="3"'.($selected == "3" ? ' selected' : '').'>3</options>'."\n";
132
+
133
+ echo ' <option value="4"'.($selected == "4" ? ' selected' : '').'>4</options>'."\n";
134
+
135
+ echo ' </select>'."\n";
100
136
 
101
137
  ?>
102
138
 
103
- <div id="choice">
104
-
105
-
106
-
107
- <input type="checkbox" name="attribute[]" value="1" id="1" <?php echo $checked["attribute"][1]; ?>><label>A</label>
108
-
109
- <select name="NOP_1">
110
-
111
- <option value="0">0</option>
112
-
113
- <option value="1" <?php echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == "1") ? "selected" : ""; ?>>1</option>
114
-
115
- <option value="2" <?php echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == "2") ? "selected" : ""; ?>>2</option>
116
-
117
- <option value="3" <?php echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == "3") ? "selected" : ""; ?>>3</option>
118
-
119
- <option value="4" <?php echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == "4") ? "selected" : ""; ?>>4</option>
120
-
121
- </select>
122
-
123
139
  <br><br>
124
140
 
125
- <input type="checkbox" name="attribute[]" value="2" id="2" <?php echo $checked["attribute"][2]; ?>><label>B</label>
126
-
127
- <select name="NOP_2">
128
-
129
- <option value="0">0</option>
130
-
131
- <option value="1" <?php echo (isset($_POST['NOP_2']) && $_POST['NOP_2'] == "1") ? "selected" : ""; ?>>1</option>
132
-
133
- <option value="2" <?php echo (isset($_POST['NOP_2']) && $_POST['NOP_2'] == "2") ? "selected" : ""; ?>>2</option>
134
-
135
- <option value="3" <?php echo (isset($_POST['NOP_2']) && $_POST['NOP_2'] == "3") ? "selected" : ""; ?>>3</option>
136
-
137
- <option value="4" <?php echo (isset($_POST['NOP_2']) && $_POST['NOP_2'] == "4") ? "selected" : ""; ?>>4</option>
138
-
139
- </select>
140
-
141
- <br><br>
141
+ <?php endfor; ?>
142
-
143
- <input type="checkbox" name="attribute[]" value="3" id="3" <?php echo $checked["attribute"][3]; ?>><label>C</label>
144
-
145
- <select name="NOP_3">
146
-
147
- <option value="0">0</option>
148
-
149
- <option value="1" <?php echo (isset($_POST['NOP_3']) && $_POST['NOP_3'] == "1") ? "selected" : ""; ?>>1</option>
150
-
151
- <option value="2" <?php echo (isset($_POST['NOP_3']) && $_POST['NOP_3'] == "2") ? "selected" : ""; ?>>2</option>
152
-
153
- <option value="3" <?php echo (isset($_POST['NOP_3']) && $_POST['NOP_3'] == "3") ? "selected" : ""; ?>>3</option>
154
-
155
- <option value="4" <?php echo (isset($_POST['NOP_3']) && $_POST['NOP_3'] == "4") ? "selected" : ""; ?>>4</option>
156
-
157
- </select>
158
-
159
- //同じようなコードの連続
160
-
161
- <input type="checkbox" name="attribute[]" value="23" id="23" <?php echo $checked["attribute"][23]; ?>><label>X</label>
162
-
163
- <select name="NOP_23">
164
-
165
- <option value="0">0</option>
166
-
167
- <option value="1" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23'] == "1") ? "selected" : ""; ?>>1</option>
168
-
169
- <option value="2" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23'] == "2") ? "selected" : ""; ?>>2</option>
170
-
171
- <option value="3" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23'] == "3") ? "selected" : ""; ?>>3</option>
172
-
173
- <option value="4" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23'] == "4") ? "selected" : ""; ?>>4</option>
174
-
175
- </select>
176
-
177
- <br><br>
178
142
 
179
143
 
180
144
 

2

コード全文修正ミス

2017/09/03 12:24

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -164,13 +164,13 @@
164
164
 
165
165
  <option value="0">0</option>
166
166
 
167
- <option value="1" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23']} == "1") ? "selected" : ""; ?>>1</option>
167
+ <option value="1" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23'] == "1") ? "selected" : ""; ?>>1</option>
168
168
 
169
- <option value="2" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23']} == "2") ? "selected" : ""; ?>>2</option>
169
+ <option value="2" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23'] == "2") ? "selected" : ""; ?>>2</option>
170
170
 
171
- <option value="3" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23']} == "3") ? "selected" : ""; ?>>3</option>
171
+ <option value="3" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23'] == "3") ? "selected" : ""; ?>>3</option>
172
172
 
173
- <option value="4" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23']} == "4") ? "selected" : ""; ?>>4</option>
173
+ <option value="4" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23'] == "4") ? "selected" : ""; ?>>4</option>
174
174
 
175
175
  </select>
176
176
 

1

修正コード全文を記載

2017/09/03 08:42

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -1,9 +1,185 @@
1
+ #### ヒアドキュメント
2
+
3
+
4
+
1
- たぶんですが、`echo`と`print`を両方しているからでないしょうか? 普通構文エラーになる思いますが、単純なコピペミスでしょうか?
5
+ ポイントはヒアドキュメントのなかに`<?php ... ?>`を書くことはできません。変数書くこはできます
6
+
7
+
8
+
9
+ ヒアドキュメントでできることは`echo "abc{$value}"`や、`echo "abc{$obj->hoge()}"`のように「ダブルクオート引用符のなかに変数などを記載する」ことと同等のことしかできません。
2
10
 
3
11
 
4
12
 
5
13
  ```php
6
14
 
15
+ // OK
16
+
17
+ echo <<<EOF
18
+
19
+ <input type="checkbox" name="attribute[]" value="1" id="1" {$checked["attribute"][1]}><label>A</label>
20
+
21
+ EOF;
22
+
23
+
24
+
25
+ // NG
26
+
27
+ echo <<<EOF
28
+
29
+ <input type="checkbox" name="attribute[]" value="1" id="1" <?phpp echo $checked["attribute"][1]; ?>><label>A</label>
30
+
31
+ EOF;
32
+
33
+
34
+
35
+ // NG
36
+
37
+ echo <<<EOF
38
+
7
- echo ((isset({$_POST['NOP_1']})) && ({$_POST['NOP_1']} == "1")) ? print "selected" : print "";
39
+ <option value="1" {(isset($_POST['NOP_1']) && $_POST['NOP_1'] == "1") ? "selected" : ""}>1</option>
40
+
41
+ EOF;
8
42
 
9
43
  ```
44
+
45
+
46
+
47
+ #### 三項演算子
48
+
49
+
50
+
51
+ `(xxx) ? yyy : zzz;`は三項演算子と呼ばれ、いろいろなプログラムでサポートされています。(丸カッコは省略してもかまいません)`if (xxx) yyy; else zzz;`と同じ意味になります。
52
+
53
+
54
+
55
+ 今回は下記のように書きます。
56
+
57
+
58
+
59
+ ```php
60
+
61
+ echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == 1) ? 'selected' : '';
62
+
63
+ ```
64
+
65
+
66
+
67
+ 冗長ですが、下記のように書いても上記と同じ結果になります。
68
+
69
+
70
+
71
+ ```php
72
+
73
+ (isset($_POST['NOP_1']) && $_POST['NOP_1'] == 1) ? echo 'selected' : echo '';
74
+
75
+ ```
76
+
77
+
78
+
79
+ ----
80
+
81
+
82
+
83
+ 修正全文は下記になります。
84
+
85
+
86
+
87
+ ```php
88
+
89
+ //1
90
+
91
+ //中略
92
+
93
+
94
+
95
+
96
+
97
+ //2
98
+
99
+ // ↓PHPの閉じ「?>」を忘れず記入します。
100
+
101
+ ?>
102
+
103
+ <div id="choice">
104
+
105
+
106
+
107
+ <input type="checkbox" name="attribute[]" value="1" id="1" <?php echo $checked["attribute"][1]; ?>><label>A</label>
108
+
109
+ <select name="NOP_1">
110
+
111
+ <option value="0">0</option>
112
+
113
+ <option value="1" <?php echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == "1") ? "selected" : ""; ?>>1</option>
114
+
115
+ <option value="2" <?php echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == "2") ? "selected" : ""; ?>>2</option>
116
+
117
+ <option value="3" <?php echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == "3") ? "selected" : ""; ?>>3</option>
118
+
119
+ <option value="4" <?php echo (isset($_POST['NOP_1']) && $_POST['NOP_1'] == "4") ? "selected" : ""; ?>>4</option>
120
+
121
+ </select>
122
+
123
+ <br><br>
124
+
125
+ <input type="checkbox" name="attribute[]" value="2" id="2" <?php echo $checked["attribute"][2]; ?>><label>B</label>
126
+
127
+ <select name="NOP_2">
128
+
129
+ <option value="0">0</option>
130
+
131
+ <option value="1" <?php echo (isset($_POST['NOP_2']) && $_POST['NOP_2'] == "1") ? "selected" : ""; ?>>1</option>
132
+
133
+ <option value="2" <?php echo (isset($_POST['NOP_2']) && $_POST['NOP_2'] == "2") ? "selected" : ""; ?>>2</option>
134
+
135
+ <option value="3" <?php echo (isset($_POST['NOP_2']) && $_POST['NOP_2'] == "3") ? "selected" : ""; ?>>3</option>
136
+
137
+ <option value="4" <?php echo (isset($_POST['NOP_2']) && $_POST['NOP_2'] == "4") ? "selected" : ""; ?>>4</option>
138
+
139
+ </select>
140
+
141
+ <br><br>
142
+
143
+ <input type="checkbox" name="attribute[]" value="3" id="3" <?php echo $checked["attribute"][3]; ?>><label>C</label>
144
+
145
+ <select name="NOP_3">
146
+
147
+ <option value="0">0</option>
148
+
149
+ <option value="1" <?php echo (isset($_POST['NOP_3']) && $_POST['NOP_3'] == "1") ? "selected" : ""; ?>>1</option>
150
+
151
+ <option value="2" <?php echo (isset($_POST['NOP_3']) && $_POST['NOP_3'] == "2") ? "selected" : ""; ?>>2</option>
152
+
153
+ <option value="3" <?php echo (isset($_POST['NOP_3']) && $_POST['NOP_3'] == "3") ? "selected" : ""; ?>>3</option>
154
+
155
+ <option value="4" <?php echo (isset($_POST['NOP_3']) && $_POST['NOP_3'] == "4") ? "selected" : ""; ?>>4</option>
156
+
157
+ </select>
158
+
159
+ //同じようなコードの連続
160
+
161
+ <input type="checkbox" name="attribute[]" value="23" id="23" <?php echo $checked["attribute"][23]; ?>><label>X</label>
162
+
163
+ <select name="NOP_23">
164
+
165
+ <option value="0">0</option>
166
+
167
+ <option value="1" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23']} == "1") ? "selected" : ""; ?>>1</option>
168
+
169
+ <option value="2" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23']} == "2") ? "selected" : ""; ?>>2</option>
170
+
171
+ <option value="3" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23']} == "3") ? "selected" : ""; ?>>3</option>
172
+
173
+ <option value="4" <?php echo (isset($_POST['NOP_23']) && $_POST['NOP_23']} == "4") ? "selected" : ""; ?>>4</option>
174
+
175
+ </select>
176
+
177
+ <br><br>
178
+
179
+
180
+
181
+ </div><!-- / end #choice -->
182
+
183
+ ```
184
+
185
+