質問編集履歴

1

whrd

2017/01/24 08:58

投稿

earnest_gay
earnest_gay

スコア615

test CHANGED
File without changes
test CHANGED
@@ -41,3 +41,251 @@
41
41
  いろいろ調べているのですが、pdoでのやり方がなくてつまづいています。
42
42
 
43
43
  表示させるにはどうしたらよいでしょうか???
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+ *追記
56
+
57
+
58
+
59
+ いろいろ調べてるうちになにやらHTML出力などを含めるとエラーになるらしいので下記のようにファイルを分けて試してみると表示されました。
60
+
61
+
62
+
63
+ しかし、やりたいことは
64
+
65
+ 例えばfacebookなどのようなとある会員サイトでプロフィール画像を変更するときに
66
+
67
+ 見かけ上はシングルページで完結しているように思わせるような動きをさせたいのです。
68
+
69
+
70
+
71
+ そういうサイトは、ユーザーからしてみれば1つのファイルで画像を入れ替えしているような感覚になりますが、実は裏でPOST送信とかで画像を渡したりして表示させているのでしょうか?
72
+
73
+
74
+
75
+ そこらへんの仕組みも知りたいです。
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+ ```php
86
+
87
+
88
+
89
+ test.php
90
+
91
+
92
+
93
+ <?php
94
+
95
+
96
+
97
+ if (isset($_POST["submit"])){
98
+
99
+
100
+
101
+ $upfile = $_FILES["upfile"]["tmp_name"];
102
+
103
+ if ($upfile==""){
104
+
105
+ print("ファイルのアップロードができませんでした。<BR>");
106
+
107
+ exit;
108
+
109
+ }
110
+
111
+
112
+
113
+ // ファイル取得
114
+
115
+ $imgdat = file_get_contents($upfile);
116
+
117
+ $imgdat = mysql_real_escape_string($imgdat);
118
+
119
+
120
+
121
+ // DB接続
122
+
123
+ $dsn = "mysql:host=127.0.0.1;dbname=games;charset=utf8;";
124
+
125
+
126
+
127
+ // PDO 接続の失敗を検知する例外処理。
128
+
129
+ try {
130
+
131
+ $pdo = new PDO(
132
+
133
+ $dsn,
134
+
135
+ "root",
136
+
137
+ "********",
138
+
139
+ array(
140
+
141
+ PDO::ATTR_PERSISTENT => true,
142
+
143
+ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
144
+
145
+ PDO::MYSQL_ATTR_LOCAL_INFILE => true
146
+
147
+ )
148
+
149
+ );
150
+
151
+
152
+
153
+ // SQL トランザクションの例外を検知する。
154
+
155
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
156
+
157
+
158
+
159
+ } catch (PDOException $e){
160
+
161
+ print_r($e->getMessage(), true);
162
+
163
+ exit;
164
+
165
+ }
166
+
167
+
168
+
169
+ // データ追加
170
+
171
+ $sql = "INSERT INTO image (image) VALUES ('$imgdat')";
172
+
173
+ $stmt = $pdo->query($sql);
174
+
175
+
176
+
177
+ if ($stmt == false){
178
+
179
+ print("SQLの実行に失敗しました<BR>");
180
+
181
+ exit;
182
+
183
+ }
184
+
185
+
186
+
187
+ print("登録が終了しました<BR>");
188
+
189
+
190
+
191
+ header( "Location: result.php" ) ;
192
+
193
+ exit;
194
+
195
+
196
+
197
+ }
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+ ?>
208
+
209
+ <HTML>
210
+
211
+ <HEAD>
212
+
213
+ <meta charset="UTF-8">
214
+
215
+ <title>画像登録&アップロード</title>
216
+
217
+ </HEAD>
218
+
219
+ <BODY>
220
+
221
+ <FORM method="POST" enctype="multipart/form-data" accept-charset="utf-8" action="">
222
+
223
+ <P>画像登録&アップロード</P>
224
+
225
+ 画像パス:<INPUT type="file" name="upfile" size="30"><BR>
226
+
227
+ <INPUT type="submit" name="submit" value="送信">
228
+
229
+ </FORM>
230
+
231
+ </BODY>
232
+
233
+ </HTML>
234
+
235
+
236
+
237
+
238
+
239
+ ```
240
+
241
+
242
+
243
+ ```php
244
+
245
+
246
+
247
+ result.php
248
+
249
+
250
+
251
+ $contents_type = array(
252
+
253
+ 'png' => 'image/png',
254
+
255
+ 'jpg' => 'image/jpeg',
256
+
257
+ 'jpeg' => 'image/jpeg',
258
+
259
+ 'gif' => 'image/gif',
260
+
261
+ 'bmp' => 'image/bmp',
262
+
263
+ );
264
+
265
+
266
+
267
+ try {
268
+
269
+
270
+
271
+ $sql = "SELECT * FROM image WHERE id = 1";
272
+
273
+ $stmt = $pdo->query($sql);
274
+
275
+ $img = $stmt->fetch(PDO::FETCH_ASSOC);
276
+
277
+
278
+
279
+ header('Content-type: ' . $contents_type[$img['type']]);
280
+
281
+ echo $img['image'];
282
+
283
+
284
+
285
+ } catch (Exception $e) {
286
+
287
+ echo "load failed: " . $e;
288
+
289
+ }
290
+
291
+ ```