teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2020/04/14 12:32

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -1,3 +1,28 @@
1
+ 根本的な原因:formは1つしか送信できない。
2
+
3
+ 「値が1つしか」ではなく「1formしか」という意味です。
4
+ 現在のコードだと1つのID毎にformタグが閉じられて完結しています。
5
+ なので1つしか送信していません。
6
+ 1submitで送信したい情報は全て、1つのform内に入れましょう。
7
+
8
+ 簡易例:
9
+ ```html
10
+ <form>
11
+ <?php
12
+ for($i=1;$i<=10;$i++){
13
+ echo '<input type="checkbox" name="id[]" value="'.$i.'">'.$i;
14
+ }
15
+ ?>
16
+ </form>
17
+ ```
18
+
19
+ 今回の質問者さんの内容だと、tableタグをformタグで囲う形にすると良いと思います。
20
+
21
+ ---
22
+ **以下、最初に書いたものの、よく見直すと根本原因ではなかった内容。**
23
+
24
+ ---
25
+
1
26
  location.href の時点で画面遷移してるからだと思います。
2
27
 
3
28
  画面遷移させるのではなく、チェック有無確認せずに単純にform.submitでいけそうに思います。

1

途中で投稿してしまいました

2020/04/14 12:32

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -3,5 +3,7 @@
3
3
  画面遷移させるのではなく、チェック有無確認せずに単純にform.submitでいけそうに思います。
4
4
  ※イベントはformのOnSubmitではなく送信ボタンのOnClickにするのが望ましい
5
5
 
6
+ updateも同じ値にするなら、回さずにinで一発で済むはずです。
7
+
6
8
  ただDBに変更を起こす処理をGETで行うべきではないと思います。URLで直でアクセスして実行させられるので不正に実行できてしまいます。
7
9
  POSTにしましょう。