前提・実現したいこと
(例)PHPで簡単なお問い合わせフォームなシステムを作っています。
前回の質問の続きです。現在、前回のご回答通りに固定情報で静的HTMLを作ってその後にPHPから得られる情報を当てはめていくという作業を行なっています。
##PHPで可変的な部分を与える方法
PHPで可変的な部分を与える方法なのですが、以下のコードのように与えて良いのでしょうか?
それともこれは無理やりな方法なのでしょうか?
php
1<?php 2 $nickname=filter_input(INPUT_POST,"nickname"); 3 $email=filter_input(INPUT_POST,"email"); 4 $content=filter_input(INPUT_POST,"content"); 5 6 $nickname=htmlspecialchars($nickname); 7 $email=htmlspecialchars($email); 8 $content=htmlspecialchars($content); 9?> 10<!DOCTYPE html> 11<html lang="ja"> 12<head> 13 <meta charset="UTF-8"> 14 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 15 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 16 <title>お問い合わせフォーム</title> 17 <link rel="stylesheet" href="css/check.css"> 18</head> 19<body> 20 <!-- 入力 山田太郎 yamada@gmail.com 大変よかったです --> 21 <h1>お問い合わせ内容(確認)</h1> 22 <h3>お問い合わせありがとうございます。 23 <?php if( $nickname==''||$email==''||$content=='') 24 { 25 print'<h3>入力内容に不足がない事を確認してください。</h3>'; 26 } 27 else 28 { 29 print'下記に問題がない事を確認して送信してください。'; 30 } 31 ?> 32 <table align="center" width="600"> 33 <thead> 34 <tr> 35 <td>項目</td> 36 <td>入力内容</td> 37 </tr> 38 </thead> 39 <tr> 40 <td>名前</td> 41 <td><?php if($nickname=="") 42 { 43 print"ニックネームが入力されていません。<br>"; 44 } 45 else 46 { 47 print $nickname; 48 print"様"; 49 print"<br>"; 50 }?></td> 51 </tr> 52 <tr> 53 <td>メールアドレス</td> 54 <td><?php if($email=="") 55 { 56 print"メールアドレスが入力されていません。<br>"; 57 } 58 else 59 { 60 print$email; 61 print"<br>"; 62 } ?></td> 63 </tr> 64 <tr> 65 <td>お問い合わせ内容</td> 66 <td width="300px;"><?php if($content=="") 67{ 68 print"ご意見が入力されていません。<br>"; 69} 70else 71{ 72 print $content; 73} ?></td> 74 </tr> 75 </table> 76 77 <?php 78 if( $nickname==''||$email==''||$content=='') 79 { 80 print'<form>'; 81 // print'<input type="button" onclick="history.back()" value="戻る" class="btn">'; 82 print'<button id="go-back" value="戻る" >戻る</button>'; 83 print'</form>'; 84 } 85 else 86 { 87 print'<form method="post" action="thanks.php">'; 88 print '<input name="nickname" type="hidden" value="'.$nickname.'">'; 89 print '<input name="email" type="hidden" value="'.$email.'">'; 90 print '<input name="content" type="hidden" value="'.$content.'">'; 91 92 // print'<input type="button" onclick="history.back()" value="戻る" class="btn">'; 93 print'<button onclick="go-back" value="戻る" >戻る</button>'; 94 // print'<input type="submit" value="OK">'; 95 print'<button type="submit">OK</button>'; 96 print"</form>"; 97 } 98 ?> 99 100 <script> 101 window.onload = function(e) { 102 document.getElementById('go-back').addEventListener('click', e => { 103 window.history.back(); 104 }) 105} 106 </script> 107</body> 108</html>
又、inputタグからbuttonタグに変更し、「戻るボタン」を押せば戻る様にしたいのですが、buttonタグではonclick="history.back()"
が使えないので、以下の様にしたのですが、意図しない結果となってしまいました。
php
1 print'<button onclick="go-back" value="戻る" >戻る</button>';
javascript
1 window.onload = function(e) { 2 document.getElementById('go-back').addEventListener('click', e => { 3 window.history.back(); 4 }) 5}
修正: 5:13
エラーはどうにか表示されなくなったのですが、ページの入力事項が消されてしまい、前のページにデータを保持したまま戻すことができません。
##ヒアドキュメント
1度見様見真似で作成したのですが、echo <<{$checkname} EOT;
と表示されています。
php
1<?php 2 $nickname=filter_input(INPUT_POST,"nickname"); 3 4 $nickname=htmlspecialchars($nickname); 5 6 $checkname = ""; 7 if($nickname=="") 8 { 9 $checkname = 'ニックネームが入力されていません。<br>'; 10 } 11 else 12 { 13 $checkname = $nickname; 14 "様<br>"; 15 } 16 ?> 17 18<tr> 19 <td>項目</td> 20 <td>入力内容</td> 21 </tr> 22 </thead> 23 <tr> 24 <td>名前</td> 25 echo <<<EOT 26 <td>{$checkname}</td> 27EOT; 28 </tr>
回答2件
あなたの回答
tips
プレビュー