PHP掲示板で画像を投稿・表示できるようにしたい。
PHPで掲示板を作っています。ここで画像データも投稿と表示ができるようにしたいです。
前提
PHPで掲示板を作っています。
データベースのテーブルはposts, images, yoko_imagesの3つ。
写真はadd.phpでimagesテーブル、yoko_imagesテーブルに格納される。ここでのid (image_id, yoko_image_id) がpostテーブルにも格納される。
投稿表示の時にはpostsテーブルに格納されているこのIDからimagesテーブル、posts_imagesテーブルを参照して画像を表示させる。
現在
データベースのイメージ
(↓postsテーブル)
(↓yoko_imagesテーブルのイメージ)
発生している問題・エラーメッセージ
画像マークがでるのみで画像が表示できません。
そのほかの投稿内容は表示できているので、データベース接続に問題はないです。
また、画像データをデータベースに反映させることはできているようです。(yoko_imageテーブルのイメージ写真参照)
該当のソースコード
PHP
1 2<?php 3try { 4 $user = 'name'; 5 $pass = 'pass'; 6 $dbh = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', $user, $pass); 7 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 8 9 // データベースからデータを取得 10 $sql = "SELECT posts.id, posts.title, posts.body, posts.image_yoko_id, posts.image_def_id, posts.date, posts.public, images.image_id AS def_image_path, yoko_images.image_id AS yoko_image_path 11 FROM posts 12 LEFT JOIN images ON posts.image_def_id = images.image_id 13 LEFT JOIN yoko_images ON posts.image_yoko_id = yoko_images.image_id"; 14 $stmt = $dbh->query($sql); 15 $posts = $stmt->fetchAll(PDO::FETCH_ASSOC); 16 17 18 $dbh = null; 19} catch (PDOException $e) { 20 echo 'エラー発生' . htmlspecialchars($e->getMessage(), ENT_QUOTES) . '<br>'; 21 exit; 22} 23?> 24 25 26 27 <div class="container"> 28 <div class="row no-gutters"> 29 <?php foreach ($posts as $post): ?> 30 <div class="col-lg-4 col-md-6 col-sm-12 col-xs-12"> 31 <div class="card" style="width: 18rem;"> 32 <a href="news_detail.php?id=<?= $post["id"] ?>"></a> 33 <?php if (!empty($post["image_yoko_id"])): ?> 34 <img src="image.php?id=<?= $post["image_yoko_id"] ?>" style="width: 100%" class="card-img-top"> 35 <?php endif; ?> 36 <div class="card-body"> 37 <h1 class="card-title"><?= $post["title"] ?></h1> 38 <div class="row"> 39 <div class="col read-article-left"> 40 <?= $post["date"] ?> 41 </div> 42 <div class="col read-article-right"> 43 記事を読む 44 </div> 45 </div> 46 </div> 47 </div> 48 </div> 49 <?php endforeach; ?> 50 </div> 51</div> 52</div> 53 54

回答1件
あなたの回答
tips
プレビュー