Saki0506
@Saki0506 (さき おぐら)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PHP(XAMPP)の画像がアップロードできない。 SQL DB

解決したいこと

phpで画像をアップロードしたいのですができません。
以下の画面なのですが「choose file」を選択すると画像自体は選べて、画像名は反映されます。
ですが「choose file」のところにパスが出るはずなのですが出ません。(おそらくこれが原因?)
サンプルでは選択した画像も反映されて画面上で確認ができるのですが見ての通り表示されてません。

画像1

Screenshot 2021-04-13 at 11.21.48.png

この後にSQLを使用してDBに画像を反映させるページもあるのですがDBに反映自体はできているようですが選択した画像ではなく、
潰れた点のようなものが保存されて表示されます。画像2は画像1でOKを押した画面。画像2でOKを押すと選択した画像の圧縮版?がDBに反映されている。

画像2

Screenshot 2021-04-13 at 11.29.44.png

XAMPPのコンソール

Screenshot 2021-04-13 at 11.33.29.png

該当するソースコード(画像1の画面のソースコードになります。)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ろくまる農園</title>
</head>
<body>

商品追加<br />
<br />
<form method="post" action="pro_add_check.php" enctype="multipart/form-data">
商品名を入力してください。<br />
<input type="text" name="name" style="width:200px"><br />
価格を入力してください。<br />
<input type="text" name="price" style="width:50px"><br />
画像を選んでください。<br />
<input type="file" name="gazou" style="width:400px"><br />
<br />
<input type="button" onclick="history.back()" value="戻る">
<input type="submit" value="OK">
</form>

</body>
</html>

該当するソースコード(画像2の画面のソースコードになります。)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ろくまる農園</title>
</head>
<body>

<?php

try
{

$pro_code=$_GET['procode'];

$dsn='mysql:dbname=shop;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$sql='SELECT name,price,gazou FROM mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[]=$pro_code;
$stmt->execute($data);

$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$pro_name=$rec['name'];
$pro_price=$rec['price'];
$pro_gazou_name=$rec['gazou'];

$dbh=null;

if($pro_gazou_name=='')
{
    $disp_gazou='';
}
else
{
    $disp_gazou='<img src="./gazou/'.$pro_gazou_name.'">';
}

}
catch(Exception $e)
{
    print'ただいま障害により大変ご迷惑をお掛けしております。';
    exit();
}

?>

商品情報参照<br />
<br />
商品コード<br />
<?php print $pro_code; ?>
<br />
商品名<br />
<?php print $pro_name; ?>
<br />
価格<br />
<?php print $pro_price; ?><br />
<?php print $disp_gazou; ?>
<br />
<br />
<form>
<input type="button" onclick="history.back()" value="戻る">
</form>

</body>
</html>

自分で試したこと

本で勉強しているのサンプルコードのコピーペースト後に実行
コンソールのDBの名前の確認
ネット上でどう問題がないかの検索

実際に私が書いているのではなく本のコードで質問も抽象的で分かりにくいとは思いますが、画像が正常にアップされないのとパスが表示されないのの考えられる原因だけでも教えていただけると助かります。

よろしくお願いします。

0

1Answer

フォーム送信データをデータベースに保存する処理が関わるphpコードが掲載されていないので、アップロードされたファイルの保存方法にミスが有ることくらいしか察することができません。
move_uploaded_file
を使って、画像公開用ディレクトリに適切に画像ファイルを保存しないと、web上に公開できません。

0Like

Comments

  1. @Saki0506

    Questioner

    ありがとうございます!無事に解決することができました。

Your answer might help someone💌