質問編集履歴

2

修正

2017/09/27 05:00

投稿

oyatsu8
oyatsu8

スコア97

test CHANGED
File without changes
test CHANGED
@@ -192,9 +192,7 @@
192
192
 
193
193
 
194
194
 
195
- ![phpMyadminのテーブル:test_json](a20309021adb1547eff6815752ee1fa3.png)
195
+ ![phpMyadminのテーブル:test_json](4a2c767ade09e0675f5d64391525d2e1.png)
196
-
197
-
198
196
 
199
197
 
200
198
 
@@ -204,33 +202,33 @@
204
202
 
205
203
  ```出力したいJSON
206
204
 
207
- "タイプ":"タイプ01",
205
+ "type":"type01",
208
-
206
+
209
- "属性":{
207
+ "properties":{
210
-
208
+
211
- "属性01":"属性01の内容",
209
+ "properties01":"properties01の内容",
212
-
210
+
213
- "属性02":"属性02の内容"
211
+ "properties02":"properties02の内容"
214
212
 
215
213
  },
216
214
 
217
- "素材":{
215
+ "material":{
218
-
216
+
219
- "素材01":{
217
+ "material01":{
220
-
218
+
221
- "素材01の購入先01":"素材01の購入先01の内容",
219
+ "material01_shop01":"material_shop01の内容",
222
-
220
+
223
- "素材01の購入先02":"素材01の購入先02の内容"
221
+ "material01_shop02":"material_shop02の内容"
224
-
222
+
225
- },
223
+ },
226
-
224
+
227
- "素材02":{
225
+ "material02":{
228
-
226
+
229
- "素材02の購入先01":"素材02の購入先01の内容",
227
+ "material02_shop01":"material02_shop01の購入先01の内容",
230
-
228
+
231
- "素材02の購入先02":"素材02の購入先02の内容"
229
+ "material01_shop02":"material02_shop02の購入先02の内容"
232
-
230
+
233
- },
231
+ },
234
232
 
235
233
  },
236
234
 

1

追記

2017/09/27 05:00

投稿

oyatsu8
oyatsu8

スコア97

test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,227 @@
13
13
 
14
14
 
15
15
  また、そのような事をしたい場合に、ちょうど良い参考書があれば教えて頂けたら助かります。
16
+
17
+
18
+
19
+
20
+
21
+ 追記:
22
+
23
+ 回答をありがとうございます。
24
+
25
+ プログラムは多分全然出来ていないと思いますが追記させて頂きます。
26
+
27
+ SELECT文の後か前に、PHPで階層を作るようなプログラムにしないといけないと思うのですが
28
+
29
+ 普通はどうやるのかがわかりません。
30
+
31
+
32
+
33
+ ```PHPプログラム
34
+
35
+ <?php
36
+
37
+ function es($str) {
38
+
39
+ return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
40
+
41
+ }
42
+
43
+ //エラー出力強制
44
+
45
+ ini_set( 'display_errors', 1 );
46
+
47
+ //すべてのエラー表示
48
+
49
+ error_reporting( E_ALL );
50
+
51
+
52
+
53
+ //データベースへの接続
54
+
55
+ define('DB_NAME', 'test');
56
+
57
+ define('DB_HOST', 'test');
58
+
59
+ define('DB_USER', 'test');
60
+
61
+ define('DB_PASS', 'test');
62
+
63
+
64
+
65
+ $dbName = DB_NAME;
66
+
67
+
68
+
69
+ $dsn = 'mysql:dbname=' . DB_NAME . ';host=' . DB_HOST . ';charset=utf8';
70
+
71
+ $option = array(
72
+
73
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
74
+
75
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
76
+
77
+ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
78
+
79
+ PDO::ATTR_EMULATE_PREPARES => false,
80
+
81
+ PDO::ATTR_STRINGIFY_FETCHES => false
82
+
83
+ );
84
+
85
+ ?>
86
+
87
+
88
+
89
+ <!DOCTYPE html>
90
+
91
+ <html lang="ja">
92
+
93
+ <head>
94
+
95
+ <meta charset="utf-8">
96
+
97
+ <title>レコードを取り出す(すべて)</title>
98
+
99
+ </head>
100
+
101
+ <body>
102
+
103
+ <div>
104
+
105
+ <?php
106
+
107
+
108
+
109
+ //MySQLデータベースに接続する
110
+
111
+ try {
112
+
113
+ $db = new PDO($dsn, DB_USER, DB_PASS, $option);
114
+
115
+
116
+
117
+ // SQL文を作る(全レコード)
118
+
119
+
120
+
121
+ $sql = "SELECT CONCAT ('aaaaaaaaaaa') FROM test_json";
122
+
123
+ //$sql = "SELECT * FROM test_json";
124
+
125
+
126
+
127
+ $res = $db->query($sql, PDO::FETCH_ASSOC);
128
+
129
+ $res = $res !== false ? $res : [];
130
+
131
+ $result = [];
132
+
133
+
134
+
135
+ foreach($res as $row) {
136
+
137
+ $result[] = $row;
138
+
139
+ }
140
+
141
+ //json
142
+
143
+ $json = json_encode($result);
144
+
145
+
146
+
147
+ ////json書き出し
148
+
149
+ $filename = "test_json.json";
150
+
151
+
152
+
153
+ $result = touch($filename);
154
+
155
+
156
+
157
+ if ($result){
158
+
159
+ // ファイルに書き出す
160
+
161
+ file_put_contents($filename, $json, LOCK_EX);
162
+
163
+ echo "{$filename}にデータを書き出しました。", "<hr>";
164
+
165
+ echo '<a href="get_contents.php">ファイルを読み込む</a>';
166
+
167
+ } else {
168
+
169
+ // ファイルエラー
170
+
171
+ echo '<span class="error">ファイルに保存できませんでした。</span>';
172
+
173
+ }
174
+
175
+ ////json書き出しend
176
+
177
+
178
+
179
+ ?>
180
+
181
+ </div>
182
+
183
+ </body>
184
+
185
+ </html>
186
+
187
+ ```
188
+
189
+
190
+
191
+ - MySQLのテーブルは階層で作る事は出来ないのでしょうか?
192
+
193
+
194
+
195
+ ![phpMyadminのテーブル:test_json](a20309021adb1547eff6815752ee1fa3.png)
196
+
197
+
198
+
199
+
200
+
201
+ - MySQLのテーブルは階層になっていませんが下記のように出力したいと思います。
202
+
203
+
204
+
205
+ ```出力したいJSON
206
+
207
+ "タイプ":"タイプ01",
208
+
209
+ "属性":{
210
+
211
+ "属性01":"属性01の内容",
212
+
213
+ "属性02":"属性02の内容"
214
+
215
+ },
216
+
217
+ "素材":{
218
+
219
+ "素材01":{
220
+
221
+ "素材01の購入先01":"素材01の購入先01の内容",
222
+
223
+ "素材01の購入先02":"素材01の購入先02の内容"
224
+
225
+ },
226
+
227
+ "素材02":{
228
+
229
+ "素材02の購入先01":"素材02の購入先01の内容",
230
+
231
+ "素材02の購入先02":"素材02の購入先02の内容"
232
+
233
+ },
234
+
235
+ },
236
+
237
+ "id":"0001"
238
+
239
+ ```