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

質問編集履歴

2

修正

2017/09/27 05:00

投稿

oyatsu8
oyatsu8

スコア97

title CHANGED
File without changes
body CHANGED
@@ -95,26 +95,25 @@
95
95
 
96
96
  - MySQLのテーブルは階層で作る事は出来ないのでしょうか?
97
97
 
98
- ![phpMyadminのテーブル:test_json](a20309021adb1547eff6815752ee1fa3.png)
98
+ ![phpMyadminのテーブル:test_json](4a2c767ade09e0675f5d64391525d2e1.png)
99
99
 
100
-
101
100
  - MySQLのテーブルは階層になっていませんが下記のように出力したいと思います。
102
101
 
103
102
  ```出力したいJSON
104
- "タイプ":"タイプ01",
103
+ "type":"type01",
105
- "属性":{
104
+ "properties":{
106
- "属性01":"属性01の内容",
105
+ "properties01":"properties01の内容",
107
- "属性02":"属性02の内容"
106
+ "properties02":"properties02の内容"
108
107
  },
109
- "素材":{
108
+ "material":{
110
- "素材01":{
109
+ "material01":{
111
- "素材01の購入先01":"素材01購入先01の内容",
110
+ "material01_shop01":"material_shop01の内容",
112
- "素材01の購入先02":"素材01購入先02の内容"
111
+ "material01_shop02":"material_shop02の内容"
113
- },
112
+ },
114
- "素材02":{
113
+ "material02":{
115
- "素材02の購入先01":"素材02の購入先01の内容",
114
+ "material02_shop01":"material02_shop01の購入先01の内容",
116
- "素材02の購入先02":"素材02の購入先02の内容"
115
+ "material01_shop02":"material02_shop02の購入先02の内容"
117
- },
116
+ },
118
117
  },
119
118
  "id":"0001"
120
119
  ```

1

追記

2017/09/27 05:00

投稿

oyatsu8
oyatsu8

スコア97

title CHANGED
File without changes
body CHANGED
@@ -5,4 +5,116 @@
5
5
 
6
6
  http://pulogu.net/blog/020-computer/php/json-use/
7
7
 
8
- また、そのような事をしたい場合に、ちょうど良い参考書があれば教えて頂けたら助かります。
8
+ また、そのような事をしたい場合に、ちょうど良い参考書があれば教えて頂けたら助かります。
9
+
10
+
11
+ 追記:
12
+ 回答をありがとうございます。
13
+ プログラムは多分全然出来ていないと思いますが追記させて頂きます。
14
+ SELECT文の後か前に、PHPで階層を作るようなプログラムにしないといけないと思うのですが
15
+ 普通はどうやるのかがわかりません。
16
+
17
+ ```PHPプログラム
18
+ <?php
19
+ function es($str) {
20
+ return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
21
+ }
22
+ //エラー出力強制
23
+ ini_set( 'display_errors', 1 );
24
+ //すべてのエラー表示
25
+ error_reporting( E_ALL );
26
+
27
+ //データベースへの接続
28
+ define('DB_NAME', 'test');
29
+ define('DB_HOST', 'test');
30
+ define('DB_USER', 'test');
31
+ define('DB_PASS', 'test');
32
+
33
+ $dbName = DB_NAME;
34
+
35
+ $dsn = 'mysql:dbname=' . DB_NAME . ';host=' . DB_HOST . ';charset=utf8';
36
+ $option = array(
37
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
38
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
39
+ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
40
+ PDO::ATTR_EMULATE_PREPARES => false,
41
+ PDO::ATTR_STRINGIFY_FETCHES => false
42
+ );
43
+ ?>
44
+
45
+ <!DOCTYPE html>
46
+ <html lang="ja">
47
+ <head>
48
+ <meta charset="utf-8">
49
+ <title>レコードを取り出す(すべて)</title>
50
+ </head>
51
+ <body>
52
+ <div>
53
+ <?php
54
+
55
+ //MySQLデータベースに接続する
56
+ try {
57
+ $db = new PDO($dsn, DB_USER, DB_PASS, $option);
58
+
59
+ // SQL文を作る(全レコード)
60
+
61
+ $sql = "SELECT CONCAT ('aaaaaaaaaaa') FROM test_json";
62
+ //$sql = "SELECT * FROM test_json";
63
+
64
+ $res = $db->query($sql, PDO::FETCH_ASSOC);
65
+ $res = $res !== false ? $res : [];
66
+ $result = [];
67
+
68
+ foreach($res as $row) {
69
+ $result[] = $row;
70
+ }
71
+ //json
72
+ $json = json_encode($result);
73
+
74
+ ////json書き出し
75
+ $filename = "test_json.json";
76
+
77
+ $result = touch($filename);
78
+
79
+ if ($result){
80
+ // ファイルに書き出す
81
+ file_put_contents($filename, $json, LOCK_EX);
82
+ echo "{$filename}にデータを書き出しました。", "<hr>";
83
+ echo '<a href="get_contents.php">ファイルを読み込む</a>';
84
+ } else {
85
+ // ファイルエラー
86
+ echo '<span class="error">ファイルに保存できませんでした。</span>';
87
+ }
88
+ ////json書き出しend
89
+
90
+ ?>
91
+ </div>
92
+ </body>
93
+ </html>
94
+ ```
95
+
96
+ - MySQLのテーブルは階層で作る事は出来ないのでしょうか?
97
+
98
+ ![phpMyadminのテーブル:test_json](a20309021adb1547eff6815752ee1fa3.png)
99
+
100
+
101
+ - MySQLのテーブルは階層になっていませんが下記のように出力したいと思います。
102
+
103
+ ```出力したいJSON
104
+ "タイプ":"タイプ01",
105
+ "属性":{
106
+ "属性01":"属性01の内容",
107
+ "属性02":"属性02の内容"
108
+ },
109
+ "素材":{
110
+ "素材01":{
111
+ "素材01の購入先01":"素材01の購入先01の内容",
112
+ "素材01の購入先02":"素材01の購入先02の内容"
113
+ },
114
+ "素材02":{
115
+ "素材02の購入先01":"素材02の購入先01の内容",
116
+ "素材02の購入先02":"素材02の購入先02の内容"
117
+ },
118
+ },
119
+ "id":"0001"
120
+ ```