前提・実現したいこと
phpでユーザーが画像を選択し、アップロードするシステムをつくています。
データベースに画像のパスは格納されているものの画像そのものがファイルへアップロードできていません。
ご教授お願いします。
発生している問題・エラーメッセージ
特になし
該当のソースコード
php
1<?php 2// 変数の初期化 3$page_flag = 0; 4 5if( !empty($_POST['btn_confirm']) and !empty($_POST['name']) && !empty( $_POST['main'])) { 6 7 $page_flag = 1; 8 9} elseif( !empty($_POST['btn_submit']) ) { 10 11 $page_flag = 2; 12} 13 // 変数の初期化 14$db = null; 15$sql = null; 16$res = null; 17$variable=null; 18$row = null; 19$num=null; 20$check=null; 21?> 22 23 <h1>投稿フォーム</h1> 24 25 <?php if( $page_flag === 1 ): ?> 26<?php 27 28$image=htmlspecialchars($_FILES['image']['name'],ENT_QUOTES); 29 30$name=htmlspecialchars($_POST['name'],ENT_QUOTES); 31 32$main=htmlspecialchars($_POST['main'],ENT_QUOTES); 33 34$check=array($image, $name,$main);?> 35<div class="attention"> 36<?php 37foreach($check as $data) 38{ 39echo '</p>'.$data.'</p>'.'</br>'; 40 41}?> 42<p>この内容でお願いします。よろしいですか?</p></div> 43<form action="entry.php" method="post"> 44 <button type="submit" name="remove" class="pre">修正</button> 45 <button type="submit" name="add" value="true" class="next">登録</button> 46 <input type="hidden" name="image" value="<?php echo $image; ?>"> 47 48 <input type="hidden" name="name" value="<?php echo $name; ?>"> 49 50 <input type="hidden" name="main" value="<?php echo $main; ?>"> 51</form> 52 <?php else: ?> 53 <div class="form-wrapper"><form action="" method="post" enctype="multipart/form-data"> 54 55 <div class="form-item"> 56 <label for="image"></label> 57 <img id="preview"> 58 <input type="file" name="image" accept="image/png, image/jpeg,image/jpg"></input> 59 </div> 60 61 <div class="form-item"> 62 63 <label for="name"></label> 64 65 <input type="text" name="name" required="required" placeholder="ニックネーム(必須)"></input> 66 67 </div> 68<div class="form-item"> 69 70 <label for="main"></label> 71 72 <input type="text" name="main" required="required" placeholder="お願いを入力(必須)"></input> 73 74 </div> 75 <div class="button-panel"> <input type="submit" class="button" name="btn_confirm" value="投稿する"></input> </div> 76 77 </form> 78 79<?php endif; ?> 80<script> 81 82</script> 83</body> 84</html>
php
1 2<?php 3 4$db = null; 5$sql = null; 6$res = null; 7$variable=null; 8$row = null; 9$num=null; 10$check=null; 11 12var_dump($_FILES['image']);//ここの時点でnullでした 13if(isset($_POST['add']) and !empty($_POST['name']) && !empty( $_POST['main'])) 14{ 15// ファイルへのパス 16 $path = './img/'; 17 18 // ファイルがアップロードされているかと、POST通信でアップロードされたかを確認 19 if( !empty($_FILES['image']['tmp_name']) && is_uploaded_file($_FILES['image']['tmp_name']) ) { 20 21 // ファイルを指定したパスへ保存する 22 if( move_uploaded_file( $_FILES['image']['tmp_name'], $path.'upload_pic.jpg') ) { 23 echo 'アップロードされたファイルを保存しました。'; 24 } else { 25 echo 'アップロードされたファイルの保存に失敗しました。'; 26 }} 27 28$db = new SQLite3("wish.db"); 29$image=$_POST['image']; 30$name=$_POST['name']; 31$main=$_POST['main']; 32 33$sql = "INSERT INTO allwish (image,name,main) VALUES (:image, :name,:main)"; 34 35以下、dbへの格納処理 36
試したこと
var_dumpによる確認(別ページにデータの移行ができていませんでした。
)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/03/15 01:17