- ベストアンサー
一つの画面で複数のパラメータを渡す方法とは?
- perlでcgiを作成しており、一つの画面で複数のパラメータを渡したい場合、HTMLのsubmitボタンは一画面に一回しか記述できないため、別の方法が必要です。
- 入力エリアごとに変更ボタンを設置し、押下されたボタンに対応するパラメータをコール元に渡すようにすると、複数のパラメータを渡すことができます。
- 詳しい方法はコード上での条件分岐とパラメータの受け渡しを行うことで実現できます。具体的な方法についてはコード例を参考にしてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
パラメータの渡し方が分からないので正確には答えられませんが、 入力エリアAと入力エリアBを分けないで、 全体を<form>で括れば値を受け渡せると思います。 ところで、 if (p == A) とやっても p や A は変数ではないので、tureの処理はしないと思いますが。
その他の回答 (1)
- PrintScree
- ベストアンサー率25% (538/2091)
複数のINPUTの値を一つのsubmitで渡したい場合は<FORM>を使用します。 <FORM METHOD=GET ACTION="値を渡したいCGIファイル名> <INPUT TYPE=HIDDEN NAME="y" VALUE=2006> <INPUT TYPE=HIDDEN NAME="m" VALUE=03> <INPUT TYPE=HIDDEN NAME="d" VALUE=27> <INPUT TYPE=submit VALUE="送信"> <INPUT TYPE=reset VALUE="取消"> </FORM> そうすると、値を受け取る側では local($Query_String) = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$Query_String); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $QUERY{$name} = $value; } というロジックで、y=2006&m=03&d=27という値を受け取れます。 このロジックでは、$QUERYという連想配列に値をセットしています。
お礼
PrintScree様大変丁寧な説明ありがとうございました。理解が深まりました。また別の問題も発生しております。よろしければそちらもご協力下さい。
お礼
moon_night様ご回答ありがとうございます。お二方のご回答で何とか成りました。ありがとうございました。