PHP HTMLでの問い合わせフォーム作成に関する質問

実現したいこと

top.phpで選択した画像を次の画面のconfirm.phpに送信し、テーブル内に表示されるようにしたいです。

発生している問題・分からないこと

echoしてもaltで設定した文言である"アップロードされた画像"としか表示されません。

該当のソースコード

top.php

1<!DOCTYPE html> 2<html lang="jp" dir="ltr"> 3<head> 4 <meta charset="utf-8"> 5 <title>お問い合わせフォーム</title> 6</head> 7<body> 8 <form action="./confirm.php" method="POST" enctype="multipart/form-data"> 9 <table border="1"> 10 <tr> 11 <td> 12 <label for="onamae">名前</label> 13 </td> 14 <td> 15 <input type="text" name="onamae" required> 16 </td> 17 </tr> 18 19 <tr> 20 <td> 21 <label for="mail_address">メールアドレス</label> 22 </td> 23 <td> 24 <input type="email" name="mail_address" required> 25 </td> 26 </tr> 27 28 <tr> 29 <td>性別</td> 30 <td> 31 <input type="radio" id="male" name="sex" value="男性" required> 32 <label for="male">男性</label> 33 <input type="radio" id="female" name="sex" value="女性" required> 34 <label for="female">女性</label> 35 </td> 36 </tr> 37 38 <tr> 39 <td>お問い合わせカテゴリ<br>(複数選択可)</td> 40 <td> 41 <input type="checkbox" id="product" name="cates[]" value="製品について"> 42 <label for="product">製品について</label> 43 44 <input type="checkbox" id="service" name="cates[]" value="サービスについて"> 45 <label for="service">サービスについて</label> 46 47 <input type="checkbox" id="recruitment" name="cates[]" value="採用について"> 48 <label for="recruitment">採用について</label> 49 50 <input type="checkbox" id="other" name="cates[]" value="その他"> 51 <label for="other">その他</label> 52 </td> 53 </tr> 54 55 <tr> 56 <td>お住まい</td> 57 <td> 58 <select id="pref" name="pref" required> 59 <option value="">選択してください</option> 60 <option value="北海道">北海道</option> 61 <option value="東北">東北</option> 62 <option value="関東">関東</option> 63 <option value="中部">中部</option> 64 <option value="近畿">近畿</option> 65 <option value="中国">中国</option> 66 <option value="四国">四国</option> 67 <option value="九州・沖縄">九州・沖縄</option> 68 </select> 69 </td> 70 </tr> 71 <tr> 72 <td> 73 <label for="message">メッセージ</label> 74 </td> 75 <td> 76 <textarea id="message" name="message" rows="4" cols="80" required></textarea> 77 </td> 78 </tr> 79 80 <tr> 81 <td> 82 <label for="image">画像</label> 83 </td> 84 <td> 85 <input type="file" name="image_path" accept="image/*"> 86 </td> 87 </tr> 88 <tr> 89 <td colspan="2" align="center"><button type="submit">送信</button></td> 90 </tr> 91 </table> 92 </form> 93</body> 94</html> 95

confirm.php

1<!DOCTYPE html> 2<html lang="jp" dir="ltr"> 3<head> 4 <meta charset="utf-8"> 5 <title>確認画面</title> 6</head> 7<body> 8 <form action="thanks.php" method="POST" enctype="multipart/form-data"> 9 10 <?php 11 //var_dump($_POST); 12 $onamae = isset($_POST['onamae']) ? $_POST['onamae'] : '';//var_dumpで確認 13 $mail_address = isset($_POST['mail_address']) ? $_POST['mail_address'] : '';//var_dumpで確認 14 $sex = isset($_POST['sex']) ? $_POST['sex'] : '';//var_dumpで確認 15 $cates = isset($_POST['cates']) ? $_POST['cates'] : [];//var_dumpで確認 16 $pref = isset($_POST['pref']) ? $_POST['pref'] : '';//var_dumpで確認 17 $message = isset($_POST['message']) ? $_POST['message'] : '';//var_dumpで確認 18 $image = isset($_FILES['image_path']) ? $_FILES['image_path'] : '';//自分が何をしようとしている?→top.phpから送信されたファイルの情報を$imageに格納。フォームが送信されたら$_FILES['image_path']にファイルの情報が含まれる。ファイルが選択されなかった場合は空の文字列が代入される。 19 $image_path = isset($image['tmp_name']) ? $image['tmp_name'] : '';//自分が何をしようとしている?→$imageからファイルのパスを取得して、$image_pathに代入している。ファイルが選択されていない場合は空の文字列が代入される。 20 21 echo "ここから"; 22 var_dump($image['tmp_name']); 23 echo "ここまで"; 24 ?> 25 26 <table border="1"> 27 <tr> 28 <td>名前</td> 29 <td><?php echo $onamae; ?></td> 30 </tr> 31 <tr> 32 <td>メールアドレス</td> 33 <td><?php echo $mail_address; ?></td> 34 </tr> 35 <tr> 36 <td>性別</td> 37 <td><?php echo $sex; ?></td> 38 </tr> 39 <tr> 40 <td>お問い合わせカテゴリ <br>(複数選択可)</td> 41 <td> 42 <?php $cates_str = implode(",", $cates); //なぜこれを書いている?→配列から単なる文字列に変えるために内部で分裂させる必要があるから。?> 43 <?php echo $cates_str; ?> 44 </td> 45 </tr> 46 <tr> 47 <td>お住まい</td> 48 <td><?php echo $pref; ?></td> 49 </tr> 50 <tr> 51 <td>メッセージ</td> 52 <td><?php echo nl2br($message); ?></td> 53 </tr> 54 <tr> 55 <td>画像</td> 56 <td><img src="<?php echo $image_path; ?>" alt="アップロードされた画像"></td> 57 </tr> 58 59 <?php $file = $_FILES['image_path']; //これは何のためにある?→アップロードされた画像(ファイル)の情報をスーパーグローバル配列に格納するため。?> 60 <?php print($file['name']); //これは何ですか?→アップロードされたファイルの元の名前?> 61 <?php print($file['type']); ?> 62 <?php print($file['tmp_name']); ?> 63 <?php print($file['error']); ?> 64 <?php print($file['size']); ?> 65 66 <?php 67 $filePath = './user_img/' . $file['name'];//しっかり理解する→相対パスでアップロードされた写真(ファイル)の保存先 68 $success = move_uploaded_file($file['name'], $filePath);//このエラーの原因がわかる→tmp_nameからnameに変えたことでエラー解消 69 70 if($success) : 71 ?> 72 <img src="<?php print($image); //やり直し?>"> 73 <?php endif; ?> 74 75 <input type="hidden" name="onamae" value="<?php echo $onamae; ?>"> 76 <input type="hidden" name="mail_address" value="<?php echo $mail_address; ?>"> 77 <input type="hidden" name="sex" value="<?php echo $sex; ?>"> 78 <input type="hidden" name="cates" value="<?php echo $cates_str; ?>"> 79 <input type="hidden" name="pref" value="<?php echo $pref; ?>"> 80 <input type="hidden" name="message" value="<?php echo nl2br($message); ?>"> 81 <input type="hidden" name="image" value="<?php echo $image; //やり直し→image_pathからimageに変更?>"> 82 </table> 83 <td colspan="2" align = "center" class="buttons"> 84 <button type="button" onclick="history.back();">戻る</button> 85 <button type="submit">送信</button> 86 </td> 87 </form> 88</body> 89</html> 90

試したこと・調べたこと

上記の詳細・結果

情報がたくさんあり、混乱しました。

補足

特になし

コメントを投稿

0 コメント