質問編集履歴

2

追記しました。imgタグを使った文章に書きかえました。データ格納時のコードを追加しました。

2021/02/17 13:54

投稿

nazonoinu
nazonoinu

スコア1

test CHANGED
File without changes
test CHANGED
@@ -26,10 +26,6 @@
26
26
 
27
27
  Picture1,2,3に関してはデータベースに直接写真を格納したいです。
28
28
 
29
- テスト用ファイルをアップロードしてみましたが写真が正しく格納できているのかは確認の仕方がわからないので出来ていません。
30
-
31
-
32
-
33
29
 
34
30
 
35
31
  ### 該当のソースコード
@@ -42,11 +38,11 @@
42
38
 
43
39
  try{
44
40
 
45
- $dsn = 'データベースの名とホスト名';
41
+ $dsn = '';
46
-
42
+
47
- $user = 'ユーザー名';
43
+ $user = '';
48
-
44
+
49
- $password = 'パスワード';
45
+ $password = '';
50
46
 
51
47
 
52
48
 
@@ -186,21 +182,243 @@
186
182
 
187
183
 
188
184
 
189
- ### 試したこと
190
-
191
- 下のコードを入力しSQL文の確認を行いました。
192
-
193
- ```PHP
194
-
195
- <?php
196
-
197
- try{![イメージ説明](8c771fa852b6296d54bd438f050939a9.png)
198
-
199
- $dsn = '掲載なので消去;
200
-
201
- $user = '掲載なので消去;
202
-
203
- $password = '掲載なので消去;
185
+
186
+
187
+
188
+
189
+ ###追記
190
+
191
+ ```php
192
+
193
+ <?php
194
+
195
+ try{
196
+
197
+ $dsn = 'mysql:dbname=???;host=???;charset=utf8';
198
+
199
+ $user = '???';
200
+
201
+ $password = '???';
202
+
203
+
204
+
205
+ $PDO = new PDO($dsn, $user, $password); //MySQLのデータベースに接続
206
+
207
+ $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+ //2.実行したいSQL文をセットする。
216
+
217
+ $car1=$PDO->query('SELECT * from user order by kanrino desc limit 1');
218
+
219
+
220
+
221
+
222
+
223
+ $cardb1=$car1->fetchAll(PDO::FETCH_ASSOC);
224
+
225
+
226
+
227
+ $img1 = base64_encode($cardb1['picture1']);
228
+
229
+ $img2 = base64_encode($cardb1['picture2']);
230
+
231
+ $img3 = base64_encode($cardb1['picture3']);
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+ $pdo=null;
240
+
241
+
242
+
243
+ }catch (PDOException $e) {
244
+
245
+ exit('データベースに接続できませんでした。' . $e->getMessage());
246
+
247
+ }
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+ ?>
258
+
259
+
260
+
261
+ <body>
262
+
263
+ <table border="1">
264
+
265
+ <!-- 1 -->
266
+
267
+ <?php
268
+
269
+ if(isset($cardb1)){
270
+
271
+ foreach($cardb1 as $card1){
272
+
273
+ echo'<tr>';
274
+
275
+ echo '<th colspan="5">',$card1['title'],'</th>';
276
+
277
+ echo'</tr>';
278
+
279
+ }
280
+
281
+ }
282
+
283
+ ?>
284
+
285
+ <!-- 2 -->
286
+
287
+ <?php
288
+
289
+ if(isset($cardb1)){
290
+
291
+ foreach($cardb1 as $card1){
292
+
293
+ echo'<tr>';?>
294
+
295
+ <th colspan="2" rowspan="2"><img src="data:;base64,<?php echo $img1; ?>"></th>
296
+
297
+ <?php
298
+
299
+ echo'<th colspan="2" rowspan="2">',$img2,'</th>';
300
+
301
+ echo'<td>',$card1['no'],'</td>';
302
+
303
+ echo'</tr>';
304
+
305
+ }
306
+
307
+ }
308
+
309
+ ?>
310
+
311
+ <!-- 3 -->
312
+
313
+ <?php
314
+
315
+ if(isset($cardb1)){
316
+
317
+ foreach($cardb1 as $card1){
318
+
319
+ echo'<tr>';
320
+
321
+ echo '<td>',$card1['kanrino'],'</td>';
322
+
323
+ echo'</tr>';
324
+
325
+ }
326
+
327
+ }
328
+
329
+ ?>
330
+
331
+
332
+
333
+ <?php
334
+
335
+ if(isset($cardb1)){
336
+
337
+ foreach($cardb1 as $card1){
338
+
339
+ echo'<tr>';
340
+
341
+ echo'<th colspan="2" rowspan="2">',$img3,'</th>';
342
+
343
+ echo'<td colspan="3" rowspan="2">',$card1['Description'],'</td>';
344
+
345
+ echo'</tr>';
346
+
347
+ }
348
+
349
+ }
350
+
351
+ ?>
352
+
353
+ ```
354
+
355
+ img1を修正し表示できるようにしてみることを目標にやってみましたができませんでした。
356
+
357
+ imgタグの文法はimg1のところのように書いていけば大丈夫でしょうか?
358
+
359
+
360
+
361
+
362
+
363
+ 画像の格納方法のコードはこうなっています。
364
+
365
+ ```html
366
+
367
+ <form action="sell.php" method="POST" enctype="multipart/form-data">
368
+
369
+ <p>車の番号(半角数字)</p>
370
+
371
+ <div><input pattern="^[0-9]+$"name="no" required></div>
372
+
373
+ <p>タイトル(25字まで)</p>
374
+
375
+ <div><textarea id="taitoru" name="taitoru" maxlength="25" placeholder="タイトルを入力"></textarea></div>
376
+
377
+ <p>車の説明(2500字まで)</p>
378
+
379
+ <div><textarea id="setumei" name="setumei" maxlength="2500" placeholder="車の説明を入力"></textarea></div>
380
+
381
+ <p>画像1(jpgもしくはjpeg)</p>
382
+
383
+ <div><input type="file" name="avatar1" accept=".jpg, .jpeg" required></div>
384
+
385
+ <P>画像2(jpgもしくはjpeg)</P>
386
+
387
+ <div><input type="file" name="avatar2" accept=".jpg, .jpeg" required></div>
388
+
389
+ <p>画像3(jpgもしくはjpeg)</p>
390
+
391
+ <div><input type="file" name="avatar3" accept=".jpg, .jpeg" required></div>
392
+
393
+ <p>掲載id</p>
394
+
395
+ <div><input pattern="^[0-9]+$"name="keisaiid" maxlength='6' minlength="6" placeholder="半角数字6桁" required></div>
396
+
397
+ <p>パスワード</p>
398
+
399
+ <div><input pattern="^['0-9''a-z''A-Z']+$" name="keisaipass" maxlength="8" minlength="8" placeholder="英数8桁(半角 英語は大文字可)" required></div>
400
+
401
+ <div><button type="submit">掲載する</button></div>
402
+
403
+ </form>
404
+
405
+
406
+
407
+ ```
408
+
409
+
410
+
411
+ ```php
412
+
413
+ <?php
414
+
415
+ try { $dsn = 'mysql:dbname=???;host=???;charset=utf8';
416
+
417
+ $user = '???';
418
+
419
+ $password = '???';
420
+
421
+
204
422
 
205
423
 
206
424
 
@@ -208,52 +426,80 @@
208
426
 
209
427
  $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示
210
428
 
429
+
430
+
431
+
432
+
211
-
433
+ $nowdeta = $PDO->query('SELECT (kanrino) from user order by kanrino desc limit 1');
434
+
212
-
435
+ // 4.実際にSQLを実行する。
436
+
213
-
437
+ $nowdeta->execute();
438
+
214
-
439
+ // 5.結果を取得する。【任意】
440
+
441
+ $beta = $nowdeta->fetch();
442
+
443
+ // newdetaの定義
444
+
445
+ $newdeta=$beta['kanrino']+1;
446
+
447
+
448
+
215
- //2.実行したいSQL文をセットする。
449
+ // 2.実行したいSQL文をセットする。2
216
-
450
+
217
- $car1=$PDO->query('SELECT * from user order by kanrino desc limit 1');
451
+ $car = $PDO->prepare('INSERT INTO user VALUES(:title,:Descript,:carno,:picture1,:picture2,:picture3,:id,:pass,:kanrino)' );
452
+
453
+
454
+
455
+
456
+
218
-
457
+ //変数の定義
458
+
219
-
459
+ $img_data1 = file_get_contents(@$_FILES['avatar1']['tmp_name']);
460
+
220
-
461
+ $img_data2 = file_get_contents(@$_FILES['avatar2']['tmp_name']);
462
+
221
-
463
+ $img_data3 = file_get_contents(@$_FILES['avatar3']['tmp_name']);
464
+
465
+
466
+
222
-
467
+ // 3.SQLに対してパラメーターをセットする。(画像の部分以外はカット)
468
+
223
- $cardb1=$car1->fetchAll(PDO::FETCH_ASSOC);
469
+ $car->bindValue(':picture1',$img_data1, PDO::PARAM_LOB);
470
+
224
-
471
+ $car->bindValue(':picture2',$img_data2, PDO::PARAM_LOB);
472
+
225
-
473
+ $car->bindValue(':picture3',$img_data3, PDO::PARAM_LOB);
474
+
475
+
476
+
226
-
477
+ // 4.実際にSQLを実行
478
+
227
-
479
+ $car->execute();
228
-
480
+
481
+
482
+
483
+
484
+
485
+
486
+
229
- }catch (PDOException $e) {
487
+ } catch (PDOException $e) {
230
488
 
231
489
  exit('データベースに接続できませんでした。' . $e->getMessage());
232
490
 
233
491
  }
234
492
 
493
+ // 6.データーベースから切断する。
494
+
235
- var_dump($cardb1);
495
+ unset($PDO);
236
-
237
-
238
-
239
-
240
-
496
+
241
- ?>
497
+ ?>
498
+
499
+
242
500
 
243
501
  ```
244
502
 
245
- ###その結果と取得したデータベースの内容
246
-
247
- ![結果](3d55a88f606113af992782e572e379a6.png)
503
+ 画像の格納の部分に関してはバグがあるのかもわからないです。(エラーメッセージは出てません。)
248
-
249
- ![取得したデータベース](4101fc4ebe70637f6f504c72811059fb.png)
504
+
250
-
251
-
252
-
253
- ###もう一つ教えていただきたいこと
505
+ 自分では正しくできていると思っていまし
254
-
255
- この表を1ページあたり10個ずつ表示していき、次のページにも...のような機能を付けたいのですがどのようなコードを書いたらいいかの検討もつかないので教えていただきたいです。
256
-
257
- ![EX](b58a58daee35e47345c4cce2526404f1.png)
258
-
259
- ショッピングサイトなどで見るこういうのを作りたいです。

1

2021/02/17 13:54

投稿

nazonoinu
nazonoinu

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- PHPのPODを使ってMySQLからデータを取得しhtmlで表にして表示したい。(数字とテキストと画像)
5
+ PHPのPDOを使ってMySQLからデータを取得しhtmlで表にして表示したい。(数字とテキストと画像)
6
6
 
7
7
 
8
8