• ベストアンサー

ウィザード形式のアンケートを作りたい

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>"; } ?>

質問者が選んだベストアンサー

  • ベストアンサー
noname#30334
noname#30334
回答No.2

このソースの場合は、JavaScriptでの遷移ではなく、 下記の方が良いと思います。 if ($rst) { //$body = "更新成功" header("Location: nextPage.php"); }

litton101
質問者

お礼

tdshさん,アドバイスありがとうございました. >header("Location: nextPage.php"); この「魔法の一文」で一発解決しました. 相当悩んでいたので,大助かりです. #1さんへの御礼にも書きましたが,サーバー側で処理したかったので その点でも良かったです. ありがとうございました.

その他の回答 (1)

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.1

litton101 さん、こんばんは。 さてご質問の件ですが、JavaScriptを組み合わせると可能であると思います。たしかJavaScriptの命令の中に「~~~.submit()」というのがありまして(~~~は、フォームの名前など)、これは実行すると別の画面に遷移するものだったと記憶しています。ご質問に書かれていた「記入漏れ」などもJavaScriptでチェックできるので便利です。…いまちょっと手元に参考書がない(職場に置きっぱなし)ので、あやふやな記憶ですみませんが、なんらかのヒントになれば幸いです。

litton101
質問者

お礼

hkd9001さん,アドバイスありがとうございました. また,御礼遅くなってすみませんでした 不特定多数に公開するものなので,できればjavascriptでなく サーバー側で対処できたらなーとは思いましたが, そういう解決もあるのだと大変参考になりました. ありがとうございました.

関連するQ&A