ショッピングカートをPHPで作っています。データベースから商品名、価格を読み込んで表示させることはできたのですが画像だけが表示されません。どうすればいいでしょうか。
index.php
1<?php 2require_once('./helpers/db_helper.php'); 3session_start(); 4if($_SERVER['REQUEST_METHOD']==='POST'){ 5 $num=$_POST['num']; 6 $pro_code=$_POST['procode']; 7 $_SESSION['cart'][$pro_code]=$num; 8} 9 10$cart=array(); 11if(isset($_SESSION['cart'])===TRUE){ 12 $cart=$_SESSION['cart']; 13} 14?> 15<html> 16 <ul class="pc-grid-col3" ><!-- .menu始まり --> 17 <?php $dbh=get_db_connect(); 18 foreach (fetch_product($dbh) as $rec): ;?> 19 <li class="col"> 20 <form action="" method="post"> 21 <img src="/image/<?php echo $rec['gazou'];?>" alt=""> 22 <p class="menu-text"><?=$rec['name'];?><br><b><?=$rec['price'].'円';?></b></p> 23 24 <select class="select-box" name="num"> 25 <?php for($i=1;$i<=10;$i++): ?> 26 <option value="<?php echo $i;?>"><?php echo $i;?></option> 27 <?php endfor;?> 28 </select><br> 29 <input type="hidden" name="procode" value="<?=$rec['code'];?>"> 30 <?php if(isset($cart[$rec['code']])===TRUE):?> 31 <p>追加済み</p> 32 <?php else: ?> 33 <input type="submit" class="cartin" value="カートに入れる"> 34 <?php endif;?> 35 </form> 36 </li> 37 <?php endforeach;?> 38 </ul> 39 40 ```db_helper.php 41function get_db_connect(){ 42 try{ 43 $dsn=DSN; 44 $user=DB_USER; 45 $password=DB_PASSWORD; 46 47 $dbh=new PDO($dsn, $user, $password); 48 }catch(PDOException $e){ 49 echo($e->getMessage()); 50 die(); 51 } 52 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 53 return $dbh; 54} 55 56function fetch_product($dbh){ 57 $sql="SELECT code, name, price, gazou FROM mst_product WHERE 1"; 58 $stmt=$dbh->prepare($sql); 59 $stmt->execute(); 60 $rec=[]; 61 while($data=$stmt->fetch(PDO::FETCH_ASSOC)){ 62 $rec[]=$data; 63 } 64 return $rec; 65}
gazouカラムにはどのような形式で格納されてるか追記してもらえますか?
DB内のgazouに何が入っているかによります。
画像自体がblobではいっているか、画像へのパス情報がはいっているかで対応が違います
結果として
<img src="/image/<?php echo $rec['gazou'];?>" alt="">
のsrc部分はどうなっているのでしょうか?
gazouにはsofa.pngのようなファイル名が入っています。
image ディレクトリ下に画像があり、その名称が間違ってないことを確認しましょう。
ためしに直接表示させてみては?
あと "image" 自体の名前は間違ってませんね?
PHPの話ではなくhtmlの話です。
画像が表示されずC:\xampp\htdocs\EC3\index.php on line 70" alt="">と表示されます。ちなみに直接sofa.pngのように入れてみると画像はちゃんと表示されます。
それって index.php の 70行目でエラーになってないスか?
70行目なんですがエラーメッセージは出ていなく本来画像が表示されるところに上記のように表示されています。
var_dump($rec['gazou'])で読ませてみるとWarning: Undefined array key "gazou" in C:\xampp\htdocs\EC3\index.php on line 90 NULLのエラーが出ました。
var_dump($rec['name'])やvar_dump($rec['code'])はちゃんと中身が表示されてます。
回答2件
あなたの回答
tips
プレビュー