• ベストアンサー

フォームよりCGIへ複数の値をPOSTしたい…。

はじめまして。 現在、ショッピングカートのCGIを利用するためにHTMLを調整しています。 【単一商品の場合】 <FORM action="cgi-bin/cart/cart.cgi" method="POST"><INPUT type="hidden" name="shouhinnumber" value="0001"><INPUT type="hidden" name="shouhinmei" value="高級シャンプー"><INPUT type="hidden" name="kakaku" value="3000"> あとはセレクトフォームで数を選択して送信すれば正常に料金計算されるのですが、これが、内容量によって料金が異なる場合、どのようにHTMLを組めばよろしいのでしょうか。 ラジオボタンでそれぞれの行にINPUTを入れたが、先頭のINPUTしか認識せず、フォーム文を複数作るとマージンが空き、複数選択が可能になってしまう。 なお、CGIをいじるのは危険なので、HTML内でどうにかしたい・・・。 つまり・・・ 高級シャンプーの 260mlが1800円 500mlが3000円 というように単一商品名で代金が異なるものを1つのフォーム内でCGIへ送信できないでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.2

JavaScriptを使えば可能です。 (例) <HTML> <HEAD> : <META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript"> <script type="text/javascript"> <!-- // shouhinnumberとkakakuに値をセットする処理 function setvalue(shouhinnumber, kakaku) { frm = document.getElementById("form1"); frm.shouhinnumber.value = shouhinnumber; frm.kakaku.value = kakaku; } // ラジオボタンが選択されているかをチェックする処理 function checkform() { frm = document.getElementById("form1"); for (i=0; i<frm.bikou1.length; i++) { if (frm.bikou1[i].checked) { // alert(frm.bikou1[i].value+"\n"+frm.shouhinnumber.value+"\n"+frm.kakaku.value); // 選択されていたので送信 frm.submit(); return; } } // 選択されていなかったのでエラー alert("商品を選択してください"); } //--> </script> : </HEAD> <BODY> : <FORM id="form1" action="~" method="~"> <INPUT type="hidden" name="shouhinnumber" value=""> <INPUT type="hidden" name="kakaku" value=""> <INPUT id="m260" type="radio" name="bikou1" value="M (260ml)" onClick="setvalue('FH26M', 1800);"><LABEL for="m260">乾燥肌の方:M (260ml)</LABEL> <BR> <INPUT id="m500" type="radio" name="bikou1" value="M (500ml)" onClick="setvalue('FH50M', 3400);"><LABEL for="m500">乾燥肌の方:M (500ml)</LABEL><BR> <INPUT id="n260" type="radio" name="bikou1" value="N (260ml)" onClick="setvalue('FH26N', 1600);"><LABEL for="n260">脂性肌の方:N (260ml)</LABEL><BR> <INPUT id="n500" type="radio" name="bikou1" value="N (500ml)" onClick="setvalue('FH50N', 3000);"><LABEL for="n500">脂性肌の方:N (500ml)</LABEL><BR> <INPUT type="button" value="送信" onClick="checkform();"> </FORM> : </BODY> </HTML>

CSC
質問者

補足

これを複数設置する場合はどこを書き換えればいいのですか??

その他の回答 (1)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

ラジオボタンでやるのなら <input type="radio" name="kakaku" value="1800">260ml<br> <input type="radio" name="kakaku" value="3000">500ml<br> プルダウンメニューなら <select name="kakaku"> <option value="1800">260ml <option value="3000">500ml </select> とすれば良いと思います。

CSC
質問者

補足

お返事いただき、ありがとうございます。 これが失敗している状態です。 <LABEL><INPUT type="radio" name="bikou1" value="M (260ml)"><INPUT type="hidden" name="shouhinnumber" value="FH26M"><INPUT type="hidden" name="kakaku" value="1800">乾燥肌の方:M (260ml)<BR></LABEL> <LABEL><INPUT type="hidden" name="shouhinnumber" value="FH50M"><INPUT type="hidden" name="kakaku" value="3400"><INPUT type="radio" name="bikou1" value="M (500ml)">乾燥肌の方:M (500ml)<BR></LABEL> <LABEL><INPUT type="hidden" name="shouhinnumber" value="FH26N"><INPUT type="hidden" name="kakaku" value="1600"><INPUT type="radio" name="bikou1" value="N (260ml)">脂性肌の方:N (260ml)<BR></LABEL> <LABEL><INPUT type="hidden" name="shouhinnumber" value="FH50N"><INPUT type="hidden" name="kakaku" value="3000"><INPUT type="radio" name="bikou1" value="N (500ml)">脂性肌の方:N (500ml)</LABEL> やはり、上記のように、商品番号・備考(タイプ)・価の3つを送るのは不可能・・・??

関連するQ&A

専門家に質問してみよう