質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1008閲覧

tmpファイルに画像が保存されない(DBには登録される)

yuugo

総合スコア12

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/02/12 00:32

編集2020/02/12 00:34

お疲れさまです。
PHPで、moveuploaded_file関数を使って、tmpファイル(画像フォルダ)に入れて、画像をDBに格納したいです。
現状として、DBには画像は格納されます。
しかし、tmpファイルには、保存されません。
このページは、メニューを追加するページなのですが、他のギャラリーなどの写真を追加するページではうまく行っています。
エラーも出ませんし、検索しても原因がわかりません。
ご享受願えませんでしょうか?

以下、HTML(POSTするのは、jsでappendして構造を作っています。)

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>ここちきんCMS管理画面/menuadd</title> <link rel="stylesheet" href="../../css/index.css"> <link href="https://fonts.googleapis.com/css?family=M+PLUS+1p:500&display=swap" rel="stylesheet"> <script src="../../js/jquery-2.0.2.min.js"></script> <script src="../../js/jpix.min.js"></script> <style> a { text-decoration:none; color:black; } .imagepre{ object-fit:cover; margin-bottom:4px; } </style> </head> <body> <div id="wrapper"><!--wrapperエリアの開始--> <div id="left_box"><!--left_boxエリアの開始--> <div class="globalmenu"> <ul class="accordion"> <li> <a class="panel-heading" href="#">メニュー</a> <ul class="shutter-panel-collapse"> <li><a href="#">追加</a></li> <li><a href="menuupdate.php">更新</a></li> <li><a href="menudelete.php">削除</a></li> </ul> </li> <li> <a class="panel-heading" href="#">ギャラリー</a> <ul class="shutter-panel-collapse"> <li><a href="../gallery/galleryadd.php">追加</a></li> <li><a href="../gallery/galleryupdate.php">更新</a></li> <li><a href="../gallery/gallerydelete.php">削除</a></li> </ul> </li> <li> <a class="panel-heading" href="#">予約</a> <ul class="shutter-panel-collapse"> <li><a href="../reservation/reservationnotmail.php">予約未確定メール</a></li> <li><a href="../reservation/reservationmail.php">予約確定メール</a></li> </ul> </li> <li> <a class="panel-heading" href="#">お知らせ</a> <ul class="shutter-panel-collapse"> <li><a href="../news/newsadd.php">追加</a></li> <li><a href="../news/newsupdate.php">更新</a></li> <li><a href="../news/newsdelete.php">削除</a></li> </ul> </li> </ul> </div><!--globalmenuエリア--> </div><!--left_boxエリア--> <div id="right_box"><!--right_boxエリアの終了--> <h1>どのメニューを追加しますか?</h1> <select name="selectAddMenu" id=""> <option value="">選択してください</option> <option value="option1">チキン料理</option> <option value="option2">スピードメニュー</option> <option value="option3">一品料理</option> <option value="option4">ドリンクメニュー</option> </select> <div class="changemenuinner"> </div> </div> </div><!--wrapperエリアの終了--> <script> $(function () { $('ul.accordion').pixiefyAccordion(); }); $(function () { $("select").change(function(){ //選択したvalue値を変数に格納 var val = $(this).val(); if(val === 'option1') {//option1が選択されたら console.log("チキン料理を変更するよ"); $(".changemenuinner").empty();//中身の初期化 $(".changemenuinner").append( "<dl>" +"<form action='#' method='POST' enctype='multipart/form-data'>" +"<dt>チキンの画像を入力してください</dt>" +"<dd><input type='file' name='chikinimage' required></dd>" +"<div class='imagepre'></div>" +"<dt>チキンの商品目を入力してください</dt>" +"<dd><input type='text' name='chikinname' required></dd>" +"<dt>チキンの英語表記を入力してください</dt>" +"<dd><input type='text' name='englishchikinname' required></dd>" +"<dt>チキンの値段を入力してください</dt>" +"<dd><input type='number' name='chikinprice' required></dd>" +"<button type='submit' name='addbtn' value='追加ボタン'>追加ボタン</button>" +"</form>" +"</dl>" ) // $(".changemenuinner").empty(); } else if(val === 'option2') {//option2が選択されたら $(".changemenuinner").empty();//中身の初期化 $(".changemenuinner").append( "<dl>" +"<form action='#' method='POST' enctype='multipart/form-data'>" +"<dt>メニュー名を入力してください</dt>" +"<dd><input type='text' name='speedname'></dd>" +"<dt>値段を入力してください</dt>" +"<dd><input type='number' name='speedprice'></dd>" +"<button type='submit' name='addbtn' value='追加ボタン'>追加ボタン</button>" +"</form>" +"</dt>" ) } else if(val === 'option3') {//option3が選択されたら $(".changemenuinner").empty();//中身の初期化 $(".changemenuinner").append( "<dl>" +"<form action='#' method='POST' enctype='multipart/form-data'>" +"<dt>メニュー名を入力してください</dt>" +"<dd><input type='text' name='onedishname'></dd>" +"<dt>メニューが画像を選択してください</dt>" +"<dd><input type='file' name='onedishimage'></dd>" +"<dt>説明を入力してください</dt>" +"<dd><input type='text' name'onedishdescription'></dd>" +"<dt>値段を入力してください</dt>" +"<dd><input type='number' name='onedishprice'></dd>" +"<button type='submit' name='addbtn' value='追加ボタン'>追加ボタン</button>" +"</form>" +"</dt>" ) } else if(val === 'option4') {//option4が選択されたら $(".changemenuinner").empty();//中身の初期化 $(".changemenuinner").append( "<dl>" +"<form action='#' method='POST' enctype='multipart/form-data'>" +"<dt>メニュー名を入力してください</dt>" +"<dd><input type='text' name='speedname'></dd>" +"<dt>値段を入力してください</dt>" +"<dd><input type='number' name='speedprice'></dd>" +"<button type='submit' name='addbtn' value='追加ボタン'>追加ボタン</button>" +"</form>" +"</dt>" ) } }) }); </script> <script src="../../js/imagepreview.js"></script> </body> </html>

以下、PHPです。(1枚目)

require("../../DB/Conf.php");//DB接続 //追加ボタンが押されたら if(!empty($_POST["addbtn"])) { $chikinname = $_POST["chikinname"]; $englishchikinname = $_POST["englishchikinname"]; $chikinprice = $_POST["chikinprice"]; //拡張子検査 $exp = ".jpg"; if($_FILES["chikinimage"]["type"] === "image/jpg") { $exp = ".jpg"; } elseif($_FILES["chikinimage"]["type"] === "image/png") { $exp = ".png"; } elseif($_FILES["chikinimage"]["type"] === "image/gif") { $exp = ".gif"; } else{ $validationMsg[] = "このファイルは指定のファイルではありません。"; } $imageName = "chikinimage_".date("YmdHis").$exp;//時間.jpgにリネーム move_uploaded_file($_FILES["chikinimage"]["tmp_name"], "../../menuimages/" .$imageName); try{ $db = new PDO(Conf::DB_DNS, Conf::DB_USERNAME, Conf::DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $sqlinsert = "INSERT INTO chikinMenu (chikinname,chikinimage,englishchikinname,chikinprice) VALUES (:name,:image,:englishname,:price)"; $stmt = $db->prepare($sqlinsert); $stmt->bindValue(":name",$chikinname,PDO::PARAM_STR); $stmt->bindValue(":image",$imageName,PDO::PARAM_STR); $stmt->bindValue(":englishname",$englishchikinname,PDO::PARAM_STR); $stmt->bindValue(":price",$chikinprice,PDO::PARAM_INT); $result = $stmt->execute(); $url = $_SERVER['REQUEST_URI']; header("Location: $url"); } catch(PDOException $ex){ print("DB接続に失敗しました"); } finally{ $db = null; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/02/12 01:36

tmpという名前のフォルダに保存したいのですか?
yuugo

2020/02/12 01:39

ご返信ありがとうございます。 いえ、一時保存の為のファイルを一般的にtmpファイルと言うと思っていて、そのような 呼び方をさせていただいていました。
m.ts10806

2020/02/12 01:41

tmpファイル(画像フォルダ) という表現だったので「どっちだ?」となったのです。
yuugo

2020/02/12 02:32

menuimages(ここでいう、tmpファイル)でした。 説明がふさわしくなかったですね、失礼致しました。
guest

回答1

0

自己解決

formタグの、enctype='multipart/form-data'の所に空白があり、それが原因でファイルに画像を保存できていませんでした。
ご回答、ご考慮してくださった皆様、ありがとうございました。

投稿2020/02/12 01:40

yuugo

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問