お疲れさまです。
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; } }
回答1件
あなたの回答
tips
プレビュー