• ベストアンサー

アンケートで質問を複数ページにわけ、最終ページで確認したい

1ページだけに質問項目を作成して、次のページで入力項目の確認をするCGIは本を見ながらできました。 しかし、この質問を複数ページにわけて最終ページで確認表示させたいのです。 (理由は携帯用のページを考えているので、長い1ページにしたくないからです) 本には載っておらず、いろいろ過去の書き込みを検索しても見つかりません。 ご存知の方、よろしくお願いします。

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

  • ベストアンサー
  • the845t
  • ベストアンサー率33% (246/743)
回答No.4

1ページ目以外はCGIです。 1ページもCGIで可能ですし。 htmlファイルとして書き出す必要は特にありませんよ? 2ページ目で、ちょっと確認項目だしてますが、 しないのであれば、そのまま3ページ目という風に・・・ ページが進む度に、 <input type="hidden" name="name" value="$FORM{'name'}"> や <input type="hidden" name="address" value="$FORM{'address'}"> と、増やしていけば、良いわけです。 なにかややこしくなってましたね、訂正します。 全てCGIとして書きなおすと、 if(!$FORM{'name'}){ print <<"END"; <form> <input type="text" name="name"><br> <input type="submit" value="送信"> </from> END } elsif($FORM{'name'}){ print <<"END"; <form> <input type="hidden" name="name" value="$FORM{'name']"> <input type="text" name="address"><br> <input type="submit" value="送信"> </from> END }elsif(($FORM{'name'}&&($FORM{'address'})){ print<<"END"; <form> <input type="hidden" name="name" value="$FORM{'name']"> <input type="hidden" name="address" value="$FORM{'address']"> <input type="radio" name="sex" value="men">男 <input type="radio" name="sex" value="women">女 <input type="submit" value="送信"> </from> END }elsif(($FORM{'name'})&&($FORM{'address'})&&($FORM{'sex'})){ print <<"END"; 氏名:$FORM{'name'}<br> 住所:$FORM{'address'}<br> 性別:$FORM{'sex'}<br> 以上でよろしいですか? <form> <input type="hidden" name="name" value="$FORM{'name']"> <input type="hidden" name="address" value="$FORM{'address']"> <input type="hidden" name="sex" value="$FORM{'sex'}"> <input type="submit" value="OK"> </form> END } 別途decode等の指示は必要です。 簡単に書くとこういう処理になると思います。

hhayato10
質問者

お礼

度重なる質問にご回答いただきありがとうございます。 これを参考に是非やってみます。 ありがとうございました。m(__)m

その他の回答 (3)

  • the845t
  • ベストアンサー率33% (246/743)
回答No.3

>この処理をさせようとすると、cgiページからcgiページを呼び出すようになるのでしょうか?(どうやって?) 前の方が仰る通りhiddenで可能ですね。 一度methodをgetでやってみると感覚がつかみやすいと思います。 別のCGIを呼び出すわけではなく、一つのCGIで可能です。 ただ、その為にはそれ用の処理が必要になります。 1ページ目 <form> 氏名:<input type="text" name="name"><br> <input type="submit" value="送信"> </form> 処理 if(($FORM{'name'})&&(!$FORM{'check'})){ print <<"END"; <!--この内容が2ページ目--> 氏名:$FORM{'name'}<br> これでよろしいですか?<br> <form> <input type="hidden" name="name" value="$FORM{'name'}"> <input type="hidden" name="check" value="name"> <input type="submit" value="OK"> </form> END } elsif($FORM{'check'} eq "name"){ print <<"END"; <!--この内容が3ページ目--> <form> <input type="hidden" name="name" value="$FORM{'name'}"> <input type="hidden" name="check" value="address"> 住所:<input type="text" name="address"> <input type="submit" value="送信"> </form> END } あとは繰り返しですね。

hhayato10
質問者

補足

詳細な解説ありがとうございます。 ああ、それなのにすみません。 どの内容がhtmlファイルに書き出し、どの内容がcgiファイルに書き出すものなのか分からなくて困惑しております。 できれば、上記の補足解説をお願いします。

  • HUTABA
  • ベストアンサー率27% (436/1611)
回答No.2

#1です。 >すみません ><INPUT TYPE="hidden" の使い方がイマイチわからないのですが、、、 >(本を見ると隠しボタンの設置に利用とあります) 隠し要素ですが、ボタンではありません。 ページになにも表示せずに、こっそりデータの受け渡しをするものです。 >実際、最終ページにはどうやってデータを渡すのでしょう? >あと、アンケートの入力項目には氏名欄(text)もあるのですけど、これも最終ページに渡せますか? 受け取ったデータが、%FORMという連想配列に格納されているとすると、 <FORM ACTION="http://localhost/perl/test.cgi" METHOD="POST"> <INPUT TYPE="hidden" NAME="Q1" VALUE="$FORM{'Q1'}"> <INPUT TYPE="text" NAME="name"> <INPUT TYPE="submit" VLAUE="送信"> </FORM> で、Q1の内容と今回入力されるnameの内容をtest.cgiに送信する事ができます。 内容確認の時は、 Q1:$FORM{'Q1'} 等として、中身を表示させれば良いと思いますよ。

hhayato10
質問者

補足

脱線してきてます? ちょっと、まとめます。 1ページ目・・・氏名の入力(text) submit ⇒※確認ページが表示されてしまう 2ページ目・・・住所の入力(text) submit ⇒※確認ページが表示されてしまう 3ページ目・・・性別の選択(radioもしくはoption) submit 4ページ目・・・1~3ページの確認一覧表示としたい。 途中で確認ページを表示させず、尚且つ最終ページでのみ確認一覧を出したいのです。 現状、1ページ目⇒確認ページで止まってしまっています。 この処理をさせようとすると、cgiページからcgiページを呼び出すようになるのでしょうか?(どうやって?) まと外れの質問になっているのかもしれませんが、解釈が間違っていたら訂正お願いします。

  • HUTABA
  • ベストアンサー率27% (436/1611)
回答No.1

それまでの回答を  <INPUT TYPE="hidden" NAME="Q1" VALUE="はい">  <INPUT TYPE="hidden" NAME="Q2" VALUE="いいえ"> のようにhiddenで全て持たせてはどうでしょう? そうすれば最終ページまで内容を保持できますよ。 それを最終ページで表示すれば、hhayato10さんのご希望通りの動作をすると思います。

hhayato10
質問者

補足

すみません <INPUT TYPE="hidden" の使い方がイマイチわからないのですが、、、 (本を見ると隠しボタンの設置に利用とあります) 実際、最終ページにはどうやってデータを渡すのでしょう? 現在は<FORM ACTION="http://localhost/perl/test.cgi" METHOD="POST"> で渡しているので、次のページで項目確認になってしまいます。 あと、アンケートの入力項目には氏名欄(text)もあるのですけど、これも最終ページに渡せますか?

関連するQ&A