回答編集履歴

1

フォーム送信について補足

2016/11/15 15:54

投稿

KaedeKazane
KaedeKazane

スコア408

test CHANGED
@@ -13,3 +13,75 @@
13
13
  ```
14
14
 
15
15
  foreachが$_POST(配列)ではなく、$_POST[""](配列内の要素)を対象に動作しているのだと思います。
16
+
17
+
18
+
19
+ 追記
20
+
21
+ ---
22
+
23
+
24
+
25
+ フォーム要素はname属性で同じ名前をつけると、基本的に上書きされてしまいます。
26
+
27
+
28
+
29
+ ```
30
+
31
+ //送信HTML
32
+
33
+ <input type="text" name="text1" value="テキストデータ1" />
34
+
35
+ <input type="text" name="text1" value="テキストデータ2" />
36
+
37
+
38
+
39
+ //受信PHP
40
+
41
+ var_dump($_POST);
42
+
43
+ // array("text1"=>"テキストデータ2") ※「テキストデータ1」は上書きされてしまう
44
+
45
+
46
+
47
+ ```
48
+
49
+
50
+
51
+ しかし、下記のようにname属性に```[]```を付けると、その名前のついたフォーム要素は配列として送信されます。
52
+
53
+ $_POSTという配列に"text1"というキーで配列が入っている、**二次元配列**の状態で受け取ることになります。
54
+
55
+
56
+
57
+ ```
58
+
59
+ //送信HTML
60
+
61
+ <input type="text" name="text1[]" value="テキストデータ1" />
62
+
63
+ <input type="text" name="text1[]" value="テキストデータ2" />
64
+
65
+
66
+
67
+ //受信PHP
68
+
69
+ var_dump($_POST);
70
+
71
+ // array("text1"=>array(0=>"テキストデータ1", 1=>"テキストデータ2"))
72
+
73
+
74
+
75
+ var_dump($_POST["text1"]);
76
+
77
+ // array(0=>"テキストデータ1", 1=>"テキストデータ2")
78
+
79
+ ```
80
+
81
+
82
+
83
+ name属性の指定方法等はフォームによるデータ送信を行う上での基本的なルールになります。
84
+
85
+ 送信の仕方が分かっていないと、受け取り側の処理でも躓いてしまいます。
86
+
87
+ CSV化はひとまず置いておいて、まずは画面に出力するなどしてフォーム扱い方の理解を深める方が良いかもしれません。