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

質問編集履歴

3

----------------------------------

2025/03/11 04:15

投稿

goun
goun

スコア11

title CHANGED
@@ -1,1 +1,1 @@
1
- PHPでCSVから同じ注文番号を持つ行の内容を抽出したい
1
+ --------------------------------------------------------------------
body CHANGED
@@ -1,89 +1,1 @@
1
- **前提**
2
-
3
- 以下のようなCSVがあります。
4
-
5
- ```
6
- "注文番号","商品名","個数","金額","備考","注文金額合計"
7
- "1","みかん","5","75","固くてもいいです","1175"
8
- "1","りんご","3","100","虫がいないか確かめて下さい","1175"
9
- "1","いちご","10","50","熟していないのをください","1175"
10
- "2","メロン","1","1000","甘いやつ","1000"
11
- "3","りんご","5","100","できるだけ渋いのを","1000"
12
- "3","いちご","10","50","小さめで","1000"
13
- "4","りんご","10","100","やわらかいのをください","1000"
14
- "5","みかん","30","75","すっぱいの","2250"
15
- "6","りんご","3","100","青りんご以外","300"
16
- "7","りんご","10","100","サン富士に似たのがほしい","7225"
17
- "7","いちご","100","50","きれいなかたちのを","7225"
18
- "7","みかん","3","75","大きいのだとうれしいです","7225"
19
- "7","メロン","1","1000","網が少ないのをください","7225"
20
- "8","みかん","5","75","冷凍みかん向け","2625"
21
- "8","みかん","30","75","腐ってないか確認して下さい","2625"
22
- ```
23
- **やりたいこと**
24
-
25
- PHPで注文番号「3」のものだけを、
26
- "注文番号","商品名1","個数1","金額1","備考1","商品名2","個数2","金額2","備考2","商品名3","個数3","金額3","備考3","商品名4","個数4","金額4","備考4","注文金額合計"
27
- という形式のデータにしたいのですが、どうしたらよいでしょうか。
28
-
29
- **やったこと**
30
-
31
- ```HTML
32
- <html>
33
- <body>
34
- <form action="sample.php" method="post" enctype="multipart/form-data">
35
- CSVファイル: <input type="file" name="csvfile" size="30" /> <input type="submit" value="アップロード" />
36
- </form>
37
- </body>
38
- </html>
39
- ```
40
-
41
- ```PHP
42
- <?php
43
-
44
- // CSV読み込み
45
- if (is_uploaded_file($_FILES["csvfile"]["tmp_name"])) {
46
- $file_tmp_name = $_FILES["csvfile"]["tmp_name"];
47
- $file_name = $_FILES["csvfile"]["name"];
48
-
49
- //拡張子を判定
50
- if (pathinfo($file_name, PATHINFO_EXTENSION) != 'csv') {
51
- $err_msg = 'CSVファイルのみ対応しています。';
52
- } else {
53
- //ファイルをdataディレクトリに移動
54
- if (move_uploaded_file($file_tmp_name, "../../../temp/uploaded/" . $file_name)) {
55
- //後で削除できるように権限を644に
56
- chmod("../../../temp/uploaded/" . $file_name, 0644);
57
- $msg = $file_name . "をアップロードしました。";
58
- $file = '../../../temp/uploaded/'.$file_name;
59
- $fp = fopen($file, "r");
60
- //配列に変換する
61
- while (($data = fgetcsv($fp, 0, ",")) !== FALSE) {
62
- $asins[] = $data;
63
- }
64
-
65
- mb_convert_variables('UTF-8','SJIS',$asins);
66
- fclose($fp);
67
- //ファイルの削除
68
- unlink('../../../temp/uploaded/'.$file_name);
69
- } else {
70
- $err_msg = "ファイルをアップロードできません。";
71
- }
72
- }
73
- } else {
74
- $err_msg = "ファイルが選択されていません。";
75
- }
76
-
77
- $order = array($asins[6][0],$asins[6][1],$asins[6][2],$asins[6][3],$asins[6][4],$asins[6][5]);
78
- echo $order[0] . "" . $order[1] . " " . $order[2] . " " . $order[3] . " " . $order[4] . " " . $order[5];
1
+ ---------------------------------------------------------------------------------------------------------------------------------------------
79
-
80
- ?>
81
- ```
82
-
83
- CSVを取り込み、指定した行を取り出すところまではできたのですが、この先、同じ注文番号を持つ他の行を統合して、以下のような結果を得るためにどのように考えたら良いのか悩んでおります。
84
-
85
- ```
86
- "3","りんご","5","100","できるだけ渋いのを","いちご","10","50","小さめで","","","","","","","","1000"
87
- ```
88
-
89
- よろしくお願いします。

2

結果の追記

2019/03/18 06:54

投稿

goun
goun

スコア11

title CHANGED
File without changes
body CHANGED
@@ -81,4 +81,9 @@
81
81
  ```
82
82
 
83
83
  CSVを取り込み、指定した行を取り出すところまではできたのですが、この先、同じ注文番号を持つ他の行を統合して、以下のような結果を得るためにどのように考えたら良いのか悩んでおります。
84
+
85
+ ```
86
+ "3","りんご","5","100","できるだけ渋いのを","いちご","10","50","小さめで","","","","","","","","1000"
87
+ ```
88
+
84
89
  よろしくお願いします。

1

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

2019/03/18 06:54

投稿

goun
goun

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,24 +1,84 @@
1
+ **前提**
2
+
3
+ 以下のようなCSVがあります。
4
+
1
5
  ```
2
- "注文番号","商品名","個数","金額","備考""
6
+ "注文番号","商品名","個数","金額","備考","注文金額合計"
3
- "1","みかん","5","75","固くてもいいです"
7
+ "1","みかん","5","75","固くてもいいです","1175"
4
- "1","りんご","3","100","虫がいないか確かめて下さい"
8
+ "1","りんご","3","100","虫がいないか確かめて下さい","1175"
5
- "1","いちご","10","50","熟していないのをください"
9
+ "1","いちご","10","50","熟していないのをください","1175"
6
- "2","メロン","1","1000","甘いやつ"
10
+ "2","メロン","1","1000","甘いやつ","1000"
7
- "3","りんご","5","100","できるだけ渋いのを"
11
+ "3","りんご","5","100","できるだけ渋いのを","1000"
8
- "3","いちご","10","50","小さめで"
12
+ "3","いちご","10","50","小さめで","1000"
9
- "4","りんご","10","100","やわらかいのをください"
13
+ "4","りんご","10","100","やわらかいのをください","1000"
10
- "5","みかん","30","75","すっぱいの"
14
+ "5","みかん","30","75","すっぱいの","2250"
11
- "6","りんご","3","100","青りんご以外"
15
+ "6","りんご","3","100","青りんご以外","300"
12
- "7","りんご","10","100","サン富士に似たのがほしい"
16
+ "7","りんご","10","100","サン富士に似たのがほしい","7225"
13
- "7","いちご","100","50","きれいなかたちのを"
17
+ "7","いちご","100","50","きれいなかたちのを","7225"
14
- "7","みかん","3","75","大きいのだとうれしいです"
18
+ "7","みかん","3","75","大きいのだとうれしいです","7225"
15
- "7","メロン","1","1000","網が少ないのをください"
19
+ "7","メロン","1","1000","網が少ないのをください","7225"
16
- "8","みかん","5","75","冷凍みかん向け"
20
+ "8","みかん","5","75","冷凍みかん向け","2625"
17
- "8","みかん","30","75","腐ってないか確認して下さい"
21
+ "8","みかん","30","75","腐ってないか確認して下さい","2625"
18
22
  ```
23
+ **やりたいこと**
24
+
19
- こういうCSVから、PHPで注文番号「3」のものだけを、
25
+ PHPで注文番号「3」のものだけを、
20
- "注文番号","商品名1","個数1","金額1","備考1","商品名2","個数2","金額2","備考2","商品名3","個数3","金額3","備考3","商品名4","個数4","金額4","備考4"
26
+ "注文番号","商品名1","個数1","金額1","備考1","商品名2","個数2","金額2","備考2","商品名3","個数3","金額3","備考3","商品名4","個数4","金額4","備考4","注文金額合計"
21
27
  という形式のデータにしたいのですが、どうしたらよいでしょうか。
22
28
 
29
+ **やったこと**
30
+
31
+ ```HTML
32
+ <html>
33
+ <body>
34
+ <form action="sample.php" method="post" enctype="multipart/form-data">
35
+ CSVファイル: <input type="file" name="csvfile" size="30" /> <input type="submit" value="アップロード" />
36
+ </form>
37
+ </body>
38
+ </html>
39
+ ```
40
+
41
+ ```PHP
42
+ <?php
43
+
44
+ // CSV読み込み
45
+ if (is_uploaded_file($_FILES["csvfile"]["tmp_name"])) {
46
+ $file_tmp_name = $_FILES["csvfile"]["tmp_name"];
47
+ $file_name = $_FILES["csvfile"]["name"];
48
+
49
+ //拡張子を判定
50
+ if (pathinfo($file_name, PATHINFO_EXTENSION) != 'csv') {
51
+ $err_msg = 'CSVファイルのみ対応しています。';
52
+ } else {
53
+ //ファイルをdataディレクトリに移動
54
+ if (move_uploaded_file($file_tmp_name, "../../../temp/uploaded/" . $file_name)) {
55
+ //後で削除できるように権限を644に
56
+ chmod("../../../temp/uploaded/" . $file_name, 0644);
57
+ $msg = $file_name . "をアップロードしました。";
58
+ $file = '../../../temp/uploaded/'.$file_name;
59
+ $fp = fopen($file, "r");
60
+ //配列に変換する
61
+ while (($data = fgetcsv($fp, 0, ",")) !== FALSE) {
62
+ $asins[] = $data;
63
+ }
64
+
65
+ mb_convert_variables('UTF-8','SJIS',$asins);
66
+ fclose($fp);
67
+ //ファイルの削除
68
+ unlink('../../../temp/uploaded/'.$file_name);
69
+ } else {
70
+ $err_msg = "ファイルをアップロードできません。";
71
+ }
72
+ }
73
+ } else {
74
+ $err_msg = "ファイルが選択されていません。";
75
+ }
76
+
77
+ $order = array($asins[6][0],$asins[6][1],$asins[6][2],$asins[6][3],$asins[6][4],$asins[6][5]);
78
+ echo $order[0] . "" . $order[1] . " " . $order[2] . " " . $order[3] . " " . $order[4] . " " . $order[5];
79
+
80
+ ?>
81
+ ```
82
+
23
- CSVを取り込ところまではわかったのですが、同じ注文番号他の行を抽出して作り直すうしたらいいか、どいうふうに考えればのかすらわからなくて困っております。
83
+ CSVを取り込み、指定した行を取り出すところまではできたのですが、この先、同じ注文番号を持つ他の行を統合して、以下のような結果得るためにどのうに考えたら良いのか悩んでおります。
24
- ご教授願えまたら幸す。
84
+ よろくお願します。