こんにちは、
今phpの練習で簡単なお問い合わせフォームをMAMPを使って作っております。
お問い合わせフォームから、確認画面に跳び
記入事項を修正したい場合に、記入データを保持しながら記入画面に戻るという事をしたいのですが、どうもうまく作動いたしません。
なにかアドバイス頂けたらうれしいです。
php
1//form1.php 2 3<?php 4 session_start(); 5 6 $errors=array(); 7 8 if(isset($_POST["submit"])){ 9 10 $name = $_POST["name"]; 11 $email = $_POST["email"]; 12 $subject = $_POST["subject"]; 13 $body = $_POST["body"]; 14 15// エスケープ 処理 16 $name = htmlspecialchars($name, ENT_QUOTES); 17 $email = htmlspecialchars($email, ENT_QUOTES); 18 $subject = htmlspecialchars($subject, ENT_QUOTES); 19 $body = htmlspecialchars($body, ENT_QUOTES); 20 21//記入欄の記入漏れのチェック 22 if($name === "") { 23 $errors["name"] = "お名前が入力されていません。"; 24 } 25 26 if($email === "") { 27 $errors["name"] = "メールアドレスが入力されていません。"; 28 } 29 30 if($body === "") { 31 $errors["body"] = "お問い合わせが入力されていません。"; 32 } 33 34 if(count($errors) === 0){ 35 $_SESSION["name"] = $name; 36 $_SESSION["email"] = $email; 37 $_SESSION["subject"] = $subject; 38 $_SESSION["body"] = $body; 39 40 header("Location: http://localhost:8888/form/form2.php"); 41 exit(); 42 } 43// 入力画面に戻ったときの記入データの保持 44 if(isset($_GET["action"]) && $_GET["action"] === "edit"){ 45 46 $name = $_SESSION["name"]; 47 $email = $_SESSION["email"]; 48 $subject = $_SESSION["subject"]; 49 $body = $_SESSION["body"]; 50 } 51 52 } 53?> 54 55<!doctype html> 56<html> 57 <head> 58 <meta charset="utf8"> 59 <title>お問い合わせ</title> 60 </head> 61 <body> 62 <?php 63 // 記入漏れがあった場合を知らせる表示 64 echo "<ul>"; 65 foreach ($errors as $value){ 66 echo "<li>"; 67 echo $value; 68 echo "</li>"; 69 } 70 echo "</ul>" 71 ?> 72 <form action="form1.php" method="post"> 73 <table> 74 <tr> 75 <th>お名前</th> 76 <td><input type="text" name="name" value="<?php if(isset($name)){echo $name;} ?>"></td> 77 </tr> 78 <tr> 79 <th>メールアドレス</th> 80 <td><input type="text" name="email" value="<?php if(isset($email)){echo $email;} ?>"></td> 81 </tr> 82 <tr> 83 <th>お問い合わせの種類</th> 84 <td><select name="subject"> 85 <option value="お仕事に関するお問い合わせ"<?php if(isset($subject) && $subject === "お仕事に関するお問い合わせ"){echo "selected";} ?>>お仕事に関するお問い合わせ</option> 86 <option value="その他のお問い合わせ"<?php if(isset($subject) && $subject === "その他のお問い合わせ"){echo "selected";} ?>>その他のお問い合わせ</option> 87 88 </td> 89 </tr> 90 <tr> 91 <th>お問い合わ内容</th> 92 <td><textarea name="body" cols="40" rows="10"><?php if(isset($body)){echo $body;} ?></textarea></td> 93 </tr> 94 <tr> 95 <td colspan="2"> 96 <input type="submit" name="submit" value="確認画面へ"> 97 </td> 98 </tr> 99 </table> 100 </form> 101 </body> 102</html> 103
php
1//form2.php 2 3<?php 4 session_start(); 5 6 if(isset($_SESSION["name"])){ 7 8 $name = $_SESSION["name"]; 9 $email = $_SESSION["email"]; 10 $subject = $_SESSION["subject"]; 11 $body = $_SESSION["body"]; 12 } 13 14?> 15<!doctype html> 16<html> 17 <head> 18 <meta charset="utf8"> 19 <title>確認画面-お問い合わせ-</title> 20 </head> 21 <body> 22 <form action="form3.php" method="post"> 23 <table> 24 <tr> 25 <th>お名前</th> 26 <td><?php echo $name; ?></td> 27 </tr> 28 <tr> 29 <th>メールアドレス</th> 30 <td><?php echo $email; ?></td> 31 </tr> 32 <tr> 33 <th>お問い合わせの種類</th> 34 <td><?php echo $subject; ?></td> 35 </tr> 36 <tr> 37 <th>お問い合わせ内容</th> 38 <td><?php echo nl2br($body); ?></td> 39 </tr> 40 <tr> 41 <td colspan="2"><input type="submit" name="submit" value="送信する"></td> 42 </tr> 43 </table> 44 </form> 45 <p><a href="form1.php?action=edit">入力画面へ戻る</a></p> 46 </body> 47</html> 48
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/28 16:32