質問編集履歴

2

結果の追記

2019/03/18 06:54

投稿

goun
goun

スコア11

test CHANGED
File without changes
test CHANGED
@@ -164,4 +164,14 @@
164
164
 
165
165
  CSVを取り込み、指定した行を取り出すところまではできたのですが、この先、同じ注文番号を持つ他の行を統合して、以下のような結果を得るためにどのように考えたら良いのか悩んでおります。
166
166
 
167
+
168
+
169
+ ```
170
+
171
+ "3","りんご","5","100","できるだけ渋いのを","いちご","10","50","小さめで","","","","","","","","1000"
172
+
173
+ ```
174
+
175
+
176
+
167
177
  よろしくお願いします。

1

PHP・HTMLの内容、やったこと/やりたいことの追加

2019/03/18 06:54

投稿

goun
goun

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,47 +1,167 @@
1
- ```
1
+ **前提**
2
2
 
3
- "注文番号","商品名","個数","金額","備考""
4
3
 
5
- "1","みかん","5","75","固くてもいいです"
6
4
 
7
- "1","んご","3","100","虫がいないか確かめて下さい"
5
+ 以下のようなCSVがあます。
8
6
 
9
- "1","いちご","10","50","熟していないのをください"
10
7
 
11
- "2","メロン","1","1000","甘いやつ"
12
-
13
- "3","りんご","5","100","できるだけ渋いのを"
14
-
15
- "3","いちご","10","50","小さめで"
16
-
17
- "4","りんご","10","100","やわらかいのをください"
18
-
19
- "5","みかん","30","75","すっぱいの"
20
-
21
- "6","りんご","3","100","青りんご以外"
22
-
23
- "7","りんご","10","100","サン富士に似たのがほしい"
24
-
25
- "7","いちご","100","50","きれいなかたちのを"
26
-
27
- "7","みかん","3","75","大きいのだとうれしいです"
28
-
29
- "7","メロン","1","1000","網が少ないのをください"
30
-
31
- "8","みかん","5","75","冷凍みかん向け"
32
-
33
- "8","みかん","30","75","腐ってないか確認して下さい"
34
8
 
35
9
  ```
36
10
 
37
- こういうCSVから、PHPで注文番号「3」のものだけを、
11
+ "注文番号","商品名","個数","金額","備考","注文金額合計"
38
12
 
13
+ "1","みかん","5","75","固くてもいいです","1175"
14
+
15
+ "1","りんご","3","100","虫がいないか確かめて下さい","1175"
16
+
17
+ "1","いちご","10","50","熟していないのをください","1175"
18
+
19
+ "2","メロン","1","1000","甘いやつ","1000"
20
+
21
+ "3","りんご","5","100","できるだけ渋いのを","1000"
22
+
23
+ "3","いちご","10","50","小さめで","1000"
24
+
25
+ "4","りんご","10","100","やわらかいのをください","1000"
26
+
27
+ "5","みかん","30","75","すっぱいの","2250"
28
+
29
+ "6","りんご","3","100","青りんご以外","300"
30
+
31
+ "7","りんご","10","100","サン富士に似たのがほしい","7225"
32
+
33
+ "7","いちご","100","50","きれいなかたちのを","7225"
34
+
35
+ "7","みかん","3","75","大きいのだとうれしいです","7225"
36
+
37
+ "7","メロン","1","1000","網が少ないのをください","7225"
38
+
39
+ "8","みかん","5","75","冷凍みかん向け","2625"
40
+
41
+ "8","みかん","30","75","腐ってないか確認して下さい","2625"
42
+
43
+ ```
44
+
45
+ **やりたいこと**
46
+
47
+
48
+
49
+ PHPで注文番号「3」のものだけを、
50
+
39
- "注文番号","商品名1","個数1","金額1","備考1","商品名2","個数2","金額2","備考2","商品名3","個数3","金額3","備考3","商品名4","個数4","金額4","備考4"
51
+ "注文番号","商品名1","個数1","金額1","備考1","商品名2","個数2","金額2","備考2","商品名3","個数3","金額3","備考3","商品名4","個数4","金額4","備考4","注文金額合計"
40
52
 
41
53
  という形式のデータにしたいのですが、どうしたらよいでしょうか。
42
54
 
43
55
 
44
56
 
45
- CSVを取り込むところまではわかったのですが、同じ注文番号の他の行を抽出して表を作り直すにはどうしたらいいのか、どういうふうに考えればいいのかすらわからなくて困っております。
57
+ **やったこと**
46
58
 
59
+
60
+
61
+ ```HTML
62
+
63
+ <html>
64
+
65
+ <body>
66
+
67
+ <form action="sample.php" method="post" enctype="multipart/form-data">
68
+
69
+ CSVファイル: <input type="file" name="csvfile" size="30" /> <input type="submit" value="アップロード" />
70
+
71
+ </form>
72
+
73
+ </body>
74
+
75
+ </html>
76
+
77
+ ```
78
+
79
+
80
+
81
+ ```PHP
82
+
83
+ <?php
84
+
85
+
86
+
87
+ // CSV読み込み
88
+
89
+ if (is_uploaded_file($_FILES["csvfile"]["tmp_name"])) {
90
+
91
+ $file_tmp_name = $_FILES["csvfile"]["tmp_name"];
92
+
93
+ $file_name = $_FILES["csvfile"]["name"];
94
+
95
+
96
+
97
+ //拡張子を判定
98
+
99
+ if (pathinfo($file_name, PATHINFO_EXTENSION) != 'csv') {
100
+
101
+ $err_msg = 'CSVファイルのみ対応しています。';
102
+
103
+ } else {
104
+
105
+ //ファイルをdataディレクトリに移動
106
+
107
+ if (move_uploaded_file($file_tmp_name, "../../../temp/uploaded/" . $file_name)) {
108
+
109
+ //後で削除できるように権限を644に
110
+
111
+ chmod("../../../temp/uploaded/" . $file_name, 0644);
112
+
113
+ $msg = $file_name . "をアップロードしました。";
114
+
115
+ $file = '../../../temp/uploaded/'.$file_name;
116
+
117
+ $fp = fopen($file, "r");
118
+
119
+ //配列に変換する
120
+
121
+ while (($data = fgetcsv($fp, 0, ",")) !== FALSE) {
122
+
123
+ $asins[] = $data;
124
+
125
+ }
126
+
127
+
128
+
129
+ mb_convert_variables('UTF-8','SJIS',$asins);
130
+
131
+ fclose($fp);
132
+
133
+ //ファイルの削除
134
+
135
+ unlink('../../../temp/uploaded/'.$file_name);
136
+
137
+ } else {
138
+
139
+ $err_msg = "ファイルをアップロードできません。";
140
+
141
+ }
142
+
143
+ }
144
+
145
+ } else {
146
+
147
+ $err_msg = "ファイルが選択されていません。";
148
+
149
+ }
150
+
151
+
152
+
153
+ $order = array($asins[6][0],$asins[6][1],$asins[6][2],$asins[6][3],$asins[6][4],$asins[6][5]);
154
+
155
+ echo $order[0] . "" . $order[1] . " " . $order[2] . " " . $order[3] . " " . $order[4] . " " . $order[5];
156
+
157
+
158
+
159
+ ?>
160
+
161
+ ```
162
+
163
+
164
+
165
+ CSVを取り込み、指定した行を取り出すところまではできたのですが、この先、同じ注文番号を持つ他の行を統合して、以下のような結果を得るためにどのように考えたら良いのか悩んでおります。
166
+
47
- ご教授したら幸いです。
167
+ よろしくおいします。