- ベストアンサー
ウィザード形式のアンケートを作りたい
HTML_QuickForm_Controllerみたいに,ウィザード形式で 進めるアンケートを作りたいです. まず,http://oshiete1.goo.ne.jp/qa2419133.htmlのNo3さんの 回答を元に1枚アンケートを作りました. アンケート回答を記入後,「送信」ボタンを押すと データベースをUpdateして,同じPHPファイルを読み込み(PHP_SELF) 記入にエラーがあればメッセージを, DB更新に成功したら更新成功,失敗したら失敗と表示するもの. ここで,更新がうまくいったら成功と表示するのではなく, 別のPHPファイルを読み込みたい(次のページに遷移したい)です. (無論.記入漏れやDB更新に失敗しら遷移せずにエラーが必要です) 骨組みだけ示すと,下記のような感じですが, 次のページに飛ばすには,どうしたらいいでしょうか. <?php $myID = getMyID(); $errFlg=false; if ( $_POST["reg"] == "" ) $errFlg = true; if ( !$errFlg ) $errmsg = "エラーあり"; if ( $errFlg ) { ?> <html> <body> <?php echo $errmsg; ?> <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <input type="text" name="email" value="<?php if($_POST["reg"]=="") { echo $db_email; } else { echo $_POST["email"]; } ?>"><?= $errStr["email"] ?> <input type="submit" name="reg" value=" 送信 "> </form> </body> </html> <?php } else { $email = $_POST["email"]; $con = mysql_connect(localhost, root, pass); $selectdb = mysql_select_db(mydb, $con); $sql = "UPDATE mytable SET email = '$email', WHERE myID = '$myID'"; $rst = mysql_query($sql, $con); if ($rst) { $body = "更新成功"; } else { $body = "更新失敗"; } print "$body<br><a href='menu.php'>戻る</a>"; } ?>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
このソースの場合は、JavaScriptでの遷移ではなく、 下記の方が良いと思います。 if ($rst) { //$body = "更新成功" header("Location: nextPage.php"); }
その他の回答 (1)
- hkd9001
- ベストアンサー率48% (99/204)
litton101 さん、こんばんは。 さてご質問の件ですが、JavaScriptを組み合わせると可能であると思います。たしかJavaScriptの命令の中に「~~~.submit()」というのがありまして(~~~は、フォームの名前など)、これは実行すると別の画面に遷移するものだったと記憶しています。ご質問に書かれていた「記入漏れ」などもJavaScriptでチェックできるので便利です。…いまちょっと手元に参考書がない(職場に置きっぱなし)ので、あやふやな記憶ですみませんが、なんらかのヒントになれば幸いです。
お礼
hkd9001さん,アドバイスありがとうございました. また,御礼遅くなってすみませんでした 不特定多数に公開するものなので,できればjavascriptでなく サーバー側で対処できたらなーとは思いましたが, そういう解決もあるのだと大変参考になりました. ありがとうございました.
お礼
tdshさん,アドバイスありがとうございました. >header("Location: nextPage.php"); この「魔法の一文」で一発解決しました. 相当悩んでいたので,大助かりです. #1さんへの御礼にも書きましたが,サーバー側で処理したかったので その点でも良かったです. ありがとうございました.