アンケートフォームを実装しているのですが、アンケート項目に記載漏れがあった場合のみ戻る様にして、記載に問題がない場合のみつぎのページに移行する様にしたのですが、ページが移動したさい、表示されません。
html
1<html> 2 <head> 3 <meta http-equiv="content-type" charset="utf-8"> 4 </head> 5 <body> 6 <form method="POST" action="check.php"> 7 ニックネームを入力して下さい<br> 8 <input name="nickname" type="text" style="width: 100px"><br> 9 メールアドレスを入力して下さい。<br> 10 <input name="email" type="text" style="width: 200px"><br> 11 ご意見を一言でお聞かせ下さい。<br> 12 <input name="goiken" type="text" style="width: 300px"><br> 13 <br> 14 <input type="submit" value="送信"> 15 </form> 16 17 </body> 18</html>
php
1<html> 2 <head> 3 <meta http-equiv="content-type" charset="utf-8"> 4 </head> 5 6 7 <body> 8 9 <?php 10 $nickname=filter_input(INPUT_POST,"nickname"); 11 $email=filter_input(INPUT_POST,"email"); 12 $goiken=filter_input(INPUT_POST,"goiken"); 13 14 $nickname=htmlspecialchars($nickname); 15 $email=htmlspecialchars($email); 16 $goiken=htmlspecialchars($goiken); 17 18 if($nickname=="") 19 { 20 print"ニックネームが入力されていません。<br>"; 21 } 22 else 23 { 24 print"ようこそ"; 25 print $nickname; 26 print"様"; 27 print"<br>"; 28 } 29 30 if($email=="") 31 { 32 print"メールアドレスが入力されていません。<br>"; 33 } 34 else 35 { 36 print"メールアドレス:"; 37 print$email; 38 print"<br>"; 39 } 40 41 if($goiken=="") 42{ 43 print"ご意見が入力されていません。<br>"; 44} 45else 46{ 47 print"ご意見『"; 48 print $goiken; 49 print"』<br>"; 50} 51 52if( $nickname==''||$email==''||$goiken=='') 53{ 54 print'<form>'; 55 print'<input type="button" onclick="history.back()" value="戻る">'; 56 print'</form>'; 57} 58else 59{ 60 print'<form method="post" action="thanks.php">'; 61 print '<input name="nickname" type="hidden" value="'.$nickname.'">'; 62 print '<input name="email" type="hidden" value="'.$email.'">'; 63 print '<input name="goiken" type="hidden" value="'.$goiken.'">'; 64 65 print'<input type="button" onclick="history.back()" value="戻る">'; 66 print'<input type="submit" value="OK">'; 67 print"</form>"; 68} 69?> 70 71 </body> 72</html>
php
1<!DOCTYPE HTML PUBLIC="-//W3C//DTD/HTML 4.01Transitional//EN"> 2<html> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=UFT-8"> 5</head> 6<body> 7<?php 8$dsn = 'myspl;dbname=project;host=localhost'; 9$user = 'root'; 10$password = ''; 11$dbh = new PDO('$dsn,$user,$password'); 12$dbh ->query('SET NAME uft8'); 13 14$nickname=$_POST['nickname']; 15$email=$_POST['email']; 16$goiken=$_POST['goiken']; 17 18$nickname=htmlspecialchars($nickname); 19$email=htmlspecialchars($email); 20$goiken=htmlspecialchars($goiken); 21 22 23print$nickname; 24print'様<br>'; 25print'ご意見ありがとうございました<br>'; 26print'いただいたご意見『'; 27print$goiken; 28print'』<br>'; 29print$email; 30print'メールに送りましたのでご確認ください。'; 31 32 33//メールを送信するプログラム 34/* 35$mail_sub='アンケート受け付けました'; 36$mail_body=$nickname."様へ/nアンケートにご協力いただきありがとうございました。"; 37$mail_body=html_entity_decode($mail_body,ENT_QUOTES,"UFT-8"); 38$mail_head='From:xxx@xx.co.jp'; 39mb_language('Japanese'); 40mb_internal_encoding("UFT-8"); 41mb_send_mail($mail,$mail_sub,$maail_body,$mail_head); 42*/ 43$sql = 'INSERT INTO anketo (nickname,email,goiken)VALUES("'.$nickname.'","'.$email.'","'.$goiken.'")'; 44$stmt = $dbh->prepare($sql); 45$stmt ->execute(); 46 47$dbh = null; 48?> 49</body> 50</html>
なんで最後filter_inputじゃなく$_POSTなんだろう・・・
意味分かって使ってるんでしょうか。
あと想定通りのhtmlになってるかどうかブラウザ「ソースを表示」で確認してくださいね。
ところで、質問は何でしょうか。
できれば質問テンプレートにそって書いてください。
まさか hidden 指定しておいて表示されないってハナシ?
このthanks.phpのファイル、最後のsql文まで書いているということは、本の通りやってるなら、その前までの
print'メールに送りましたのでご確認ください。';
までを一応表示するというのはクリアされてるんですかね?
だとすると問題はsql文からということになりますので、その旨追記された方が良いかと思います。もし、sql文前まででのチェックをされてないなら、とりあえずsql文はコメントアウトしといて、本の通り、ここまでを表示してみてどうなるかチェックしてください。
m.ts10806様
質問者さんじゃない私が答えるのもあれですが、この本(いきなりはじめるPHP)という本は、意味とか文法的な物はほとんどまともには教えてなくて、とにかく挫折せずにやる為には四の五の言わずに作ってみようよ ていうコンセプトのいわば「なんちゃってPHP」の本ですので、作って動かす楽しさみたいなものを味わう為のものですから、いろいろさわりを入れてるのであっちには書いてるけどこっちには書いてないみたいなのも出てきます。
まあそういう本なので細かい所は突っ込まないであげてください(笑)
いきなりPHPって挫折させて足切りするための書籍じゃなかったけ?
回答1件
あなたの回答
tips
プレビュー