回答編集履歴
2
修正
test
CHANGED
@@ -16,13 +16,13 @@
|
|
16
16
|
|
17
17
|
つまり、
|
18
18
|
|
19
|
-
点数合計計算をjavascriptで
|
19
|
+
点数合計計算をjavascriptで対応するのでしたら、選択教科と点数の表示までjavascriptで対応する必要がありますし、
|
20
|
-
|
20
|
+
|
21
|
-
選択教科と点数の表示をphpで
|
21
|
+
選択教科と点数の表示をphpで対応するのでしたら、点数合計計算もphpで対応する必要があります。
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
-
という前提で、phpでやる場合の回答です。
|
25
|
+
という前提で、phpでやりきる場合の回答です。
|
26
26
|
|
27
27
|
----
|
28
28
|
|
@@ -164,7 +164,7 @@
|
|
164
164
|
|
165
165
|
|
166
166
|
|
167
|
-
te2jiさんが仰っているように今回の場合、form生成を簡略化したいためにphpを利用しているような形となっていますが、この要件だけだと
|
167
|
+
te2jiさんが仰っているように今回の場合、form生成を簡略化したいためにphpを利用しているような形となっていますが、この要件だけだとjavascriptだけで完結できます。
|
168
168
|
|
169
169
|
(おそらく自身のjavascriptの記述もそうしているはず)
|
170
170
|
|
1
追記
test
CHANGED
@@ -1,3 +1,31 @@
|
|
1
|
+
前提があります。
|
2
|
+
|
3
|
+
**javascriptで全部やりきるか、phpで全部やりきるかを決めてください。**
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
今現在やろうとしていることは「javascriptで合計値を出して、phpで選択した教科と点数を表示する」とお見受けしましたが、**併用はできません。**
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
回答後半でも書いていますが、phpはサーバー側の言語、javascriptはクライアント側の言語だからです。
|
12
|
+
|
13
|
+
javascriptで合計を出した後に、送信ボタンで送信するとphp側で受け取るのはチェックボックスなどの情報ですが、サーバー側にリクエストを送信することとなるので、javascriptで出した合計値は画面表示時の状態に戻ります。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
つまり、
|
18
|
+
|
19
|
+
点数合計計算をjavascriptでやるのでしたら、選択教科と点数の表示までjavascriptでやる必要がありますし、
|
20
|
+
|
21
|
+
選択教科と点数の表示をphpでやるのでしたら、点数合計計算もphpでやる必要があります。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
という前提で、phpでやる場合の回答です。
|
26
|
+
|
27
|
+
----
|
28
|
+
|
1
29
|
エラーの理由。
|
2
30
|
|
3
31
|
|
@@ -62,7 +90,7 @@
|
|
62
90
|
|
63
91
|
|
64
92
|
|
65
|
-
phpでやり
|
93
|
+
phpでやりきりたい場合は、下記のように組みます。
|
66
94
|
|
67
95
|
|
68
96
|
|
@@ -144,32 +172,108 @@
|
|
144
172
|
|
145
173
|
|
146
174
|
|
175
|
+
> チェックを付けたものをテキストで出力したい
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
チェックを送信したものを初期値checkedにしておけば不要かなと思い、コードを作ってみました。
|
180
|
+
|
181
|
+
それでも「別途テキスト表示したい」というのであれば、
|
182
|
+
|
183
|
+
foreachの中でチェックした情報を初期値としている箇所で下記のように拾うように組めばよいです。
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
```php
|
188
|
+
|
189
|
+
<?php
|
190
|
+
|
191
|
+
$total = 0;
|
192
|
+
|
193
|
+
$check_subject = "";
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
$array = array(
|
198
|
+
|
199
|
+
"体育" => 75,
|
200
|
+
|
201
|
+
"社会" => 58,
|
202
|
+
|
203
|
+
"国語" => 74,
|
204
|
+
|
205
|
+
"算数" => 50,
|
206
|
+
|
207
|
+
"理科" => 75,
|
208
|
+
|
209
|
+
);
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
foreach($array as $key => $value){
|
214
|
+
|
215
|
+
$checked = "";
|
216
|
+
|
217
|
+
if(array_key_exists($key,$_GET)){
|
218
|
+
|
219
|
+
$check_subject .= "{$key}({$_GET[$key]})"; //チェックされた教科と点数の画面出力用情報を保持
|
220
|
+
|
221
|
+
$total += $_GET[$key]; //チェックされた教科の点数を加算
|
222
|
+
|
223
|
+
$checked = " checked"; //チェックされた教科を初期チェック状態に
|
224
|
+
|
225
|
+
}
|
226
|
+
|
227
|
+
echo '<input type="checkbox" name="'.$key.'" value="'.$value.'"'.$checked.'>'.$key.'(<span class="score">'.$value.'</span>)';
|
228
|
+
|
229
|
+
echo '<br>';
|
230
|
+
|
231
|
+
}
|
232
|
+
|
233
|
+
?>
|
234
|
+
|
235
|
+
合計点数:<input type="text" name="_total" size="5" value="<?=$total ?>"> <input type="reset" value="やり直し">
|
236
|
+
|
237
|
+
<input type="submit" value="送信">
|
238
|
+
|
239
|
+
<?=$check_subject ?>
|
240
|
+
|
241
|
+
```
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
# 補足
|
248
|
+
|
249
|
+
ただ、チェックボックスというのは、おおよその場合、「同列の情報の中で複数選択するとき」に利用するものと思われます。
|
250
|
+
|
251
|
+
通常は「配列」の形で送信するように仕込みます。
|
252
|
+
|
253
|
+
そうすると「同列の項目の中でチェックしたものだけ送信される」ようにします。
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
- [【PHP】チェックボックスの値を受け取る](https://qiita.com/4cres/items/26154314959dcccbfd34)
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
なので、今回はチェックボックスでフォームを作るのではなく、
|
262
|
+
|
263
|
+
テキストボックスで点数を入力してそれぞれのnameに教科名を入れて送信する方が
|
264
|
+
|
265
|
+
汎用的で適切な使い方になるのでは?と思います。
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
蛇足:
|
270
|
+
|
147
271
|
下記気になったので。
|
148
272
|
|
149
273
|
> phpで生成したフォームを使ってjavascriptによる処理が上手くいったのでそこまで考えていませんでした。
|
150
274
|
|
151
275
|
|
152
276
|
|
153
|
-
phpで生成したフォーム はその時点でhtmlとして扱われるので何で作ったとか関係あ
|
277
|
+
phpで生成したフォーム はその時点でhtmlとして扱われるのでjavascript側は何で作ったとか関係なくあくまで今でているhtmlからのイベントを受け取って処理を行います。
|
154
278
|
|
155
279
|
あくまでphpはhtmlから送信された情報やDBの情報を処理するもので、画面出力についてはあくまで補足機能でしかない と思っておいて良いかと。
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
# 補足
|
166
|
-
|
167
|
-
ただ、チェックボックスというのは、おおよその場合、「同列の情報の中で複数選択するとき」に利用するものと思われます。
|
168
|
-
|
169
|
-
通常は「配列」の形で送信するように仕込みます。
|
170
|
-
|
171
|
-
そうすると「同列の項目の中でチェックしたものだけ送信される」ようにできます。
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
- [【PHP】チェックボックスの値を受け取る](https://qiita.com/4cres/items/26154314959dcccbfd34)
|