• 締切済み

htmlで、cgiに渡す文字列を結合させたい

基本的なところだとおもうのですが、教えてください。 現在: テキスト入力値 を 外部cgiに渡す ↓ やりたいこと: 2つ以上のセレクトボックス+テキストを空白で結合させ、それを、現在のテキスト入力値と同じように、外部cgiに渡したい。 現在、以下のようなhtmlになっています。 テキストを入力するのをやめて、2つ以上のセレクトボックスを配置し、そのセレクトボックスで選択されたものを、空白で結合させ、テキストボックスで入力されたものと同じように、cgiに渡したい。 現在のhtmlの一部 <form method="post" action="http://~/cgi-bin/foo.cgi"> <input name="word1" style=""> <input value="検索" type="submit"> を2つのセレクトボックスで、選択させた上で、テキストと結合する。 イメージ的には、 <select name="word3"><option value=" " selected="selected"> </option><option value="a">a </option><option value="b">b <select name="word4"><option value=" " selected="selected"> </option><option value="c">c </option><option value="d">d <input name="word2" style="" size=2> として、 word1 = word3 + " " + word4 + " " + word2 のように、文字列を結合させた形で、cgiに渡したいのです。 なにとぞよろしくお願いいたします。

  • HTML
  • 回答数3
  • ありがとう数1

みんなの回答

  • asapinya
  • ベストアンサー率36% (40/109)
回答No.3

no.1です。 iモードからの操作が必要ならjavascriptは、あきらめたほうが良いですね。 直接cgiも変更できないのであれば、一旦ほかのcgiに渡し、そこから本来のcgiに引き渡すという方法ですかねぇ。 ということで、考えてみました。 ----------追加cgi--------- #!/usr/local/bin/perl require './jcode.pl'; if($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); }else{ $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs){ ($key, $dat) = split(/=/, $pair); $key =~ tr/+/ /; $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*key,'sjis'); $dat =~ tr/+/ /; $day =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*dat,'sjis'); @name[$i] = $key; @value[$i] = $dat; $i++; $jdata = $jdata.$dat." "; } chop($jdata); print "Content-type: text/html", "\n\n"; print "<html><body>"; print "入力確認<br>\n"; print "<table border=1>"; for ($n=0;$n<$i;$n++){ print "<tr><td>$name[$n]</td><td>$value[$n]</td></tr>\n"; } print "<form action='./【本来のcgi】'>\n"; print "<input type='hidden' name='word1' value='$jdata' >\n"; print "<input type='submit' value='OK'></form>"; print "</BODY></HTML>\n"; -------------------------------------- HTMLのフォームタグは <form method="post" action="./【追加するcgi】"> で元のシンプルな形に戻し、javascriptはすべて削除。 <input type="hidden" ~> も削除。 cgiからcgiに値を受け渡すのに、そこでもボタンを押さなくてはいけないので確認画面を出しています。 OKボタンを押すとhiddenに書かれた結合文字が送られるようになっています。 追加cgiのHTML書き出し部分は必要最低限の物しか書いていません。 こんなんでどうでしょうか・・・

Hanten777
質問者

お礼

回答を本当にありがとうございました! インフォシークで動くようにいろいろとトライしています。

Hanten777
質問者

補足

アドバイス、ありがとうございました。 おかげさまで、もう少しのところまでいっています。 ただ、一応なんとかなっていますので、お時間があれば、教えてください。 今は、以下2点が起こっています。 1)インフォシークだと、エラーが起こってしまう 2)regist.cgiと一緒に動作しないと正しい動きにならない 1)については、 最初、インフォシークiswebでは、以下のエラーメッセージが出ていました。 ===ここから CGIプログラムエラーのため表示することが出来ません。(500 Internal Serve r Error) * 多くの場合、以下のような理由が考えられます。 o パスの指定間違い perl のパスは /usr/local/bin/perl です。 o スクリプトの改行コードに問題があります ファイルの転送時はアスキーモードで転送して下さい。 o スクリプトの記述に誤りがある可能性があります 文法チェック等を行ってください。 ===ここまで ところが、BIGLOBEに配置したら、エラーは出なくなりました。 できれば、インフォシークで動くようにしたいです。 2)に関しては、BIGLOBEで動作はしたのですが、"次ページ"ボタンがなくなって いました。 以下の、文を加えたら、動くようになりました。 <a href="http://~/regist.cgi"></a><input style="" name="key" value="5fN0nEVAY160w" size="1" type="password"> ■追加の希望としたら、現在 html→cgi(確認)→結果、なのですが、 cgiだけにしてしまいたいな、と思っています。 とにかく、ご親切にcgiまで作っていただき、本当にありがとうございました。

  • asapinya
  • ベストアンサー率36% (40/109)
回答No.2

no.1です。 う~ん。iモードではjavascriptが使えなかったかと・・・ 表示されなくなっても動かないのでは意味がないですよね。 一番簡単なのはcgiの中で結合処理をすることですが、それは不可能ですか? 私自身iモードで確認できないのでなんですが、スタイルシートで幅指定をして見てはいかがでしょうか? <select style="width:100px" ~~ のように記述してみてください。 すみません。今回は自信なしです(;;)

Hanten777
質問者

補足

回答、ありがとうございます!! 実は、より変な現象が出てしまいました。(本当は昨日書き込みたかったのですが、okwaveのシステムで追加書き込みができませんでした。) セレクトボックスを4つとテキストボックスを1つ作成したのですが、 PCでは、きちんと動くのですが、iモードでは、javaスクリプトがうまく動いていないような現象となっています。 最初の2つのセレクトボックスのどちらかを選択すると、文字列は、word1に渡されているようなのですが、順番が違います。(なぜか、数字2つの間に、セレクトボックスで選択された文字があります。) 最後の2つのセレクトボックスのどちらかを選択すると、その文字列は、無視されて、word1に渡されているようです。 ちなみに、functionは、次のように記述しています。 <script type="text/javascript"> function tjoin(F){ F.word1.value =F.word3.value + F.word4.value + F.word5.value + F.word6.value + " " + F.word2.value; } </script> word3-6のセレクトボックスは、どれかを選び、word2は、数字だけを入力しています。(istyle=4) 先方のcgiは変更することができませんが、こちら側になんらかのPerlなら、少しは書けるかもしれません。 なんとか、お助けください。 よろしくお願いいたします。

  • asapinya
  • ベストアンサー率36% (40/109)
回答No.1

form内のデータはすべてcgiに送られるので、hiddenを使ってそこに結合文字を入れてあげてはいかがでしょう? 具体的には <script type="text/javascript"> function tjoin(F){ F.word1.value =F.word3.value +" "+ F.word4.value +" "+ F.word2.value; } </script> をヘッダに入れ、 <form method="post" onsubmit="tjoin(this)" action="~~"> ~~ <input type="hidden" name="word1"> ~~ をBODYに追加。 どうでしょうか?

Hanten777
質問者

補足

ありがとうございました! ほんとうに感謝です。 ほぼできたのですが、 1) iモードの携帯(FOMA N705iミュー)から見ると、 function tjoin(F){ F.word1.value =F.word3.value +" "+ F.word4.value +" "+ F.word2.value; } が表示されてしまうのです。 なんとか、表示されないようにできる方法がありますでしょうか? 2)携帯からみると、selectのリストボックスがかなり大きいのですが、サイズを変える方法がありますでしょうか? 何度もすみませんが、なにとぞご教授いただけませんでしょうか?

関連するQ&A

  • セレクトボックスで指定した任意のCGIにPOSTしたい

    フォームでリクエストを送信する際、セレクトボックスで指定した任意のCGIにPOSTしたいのです JavaScriptで実現したいのですが...教えてくださいm(__)m 下記はフォームの中身です。 <form action="" method="post"> <input type="text" name="key_word"> <select name="S1"> <option selected value="error">CATEGORY <option value="search_1.cgi">SELECT_1 <option value="search_2.cgi">SELECT_2</option> </select> <input type="hidden" value="kw_search" name="mode"> <input type="submit" value="検索"></td> </form>

  • サイト内検索cgiの修正について

    http://www.kent-web.com/cgi/wfinder.cgi を使用しています。 ですが、これのキーワードボックスを使うのではなく、FLASHで作成したテキストボックスとボタンを使用して 検索を行いたいのです。 <FORM ACTION="$script" METHOD="POST"> <INPUT TYPE=TEXT NAME=word STYLE="BORDER-STYLE:SOLID; BORDER-COLOR:GRAY; BORDER-WIDTH:1;" SIZE=40 VALUE="$in{'word'}"> <INPUT TYPE=SUBMIT STYLE="BORDER-STYLE:SOLID; BORDER-COLOR:GRAY; BACKGROUND-COLOR:SILVER; BORDER-WIDTH:1;" VALUE="検索"> <BR><BR> <B>表\示件数</B> <SELECT NAME="view"> として、テキストボックスに、FLASHのテキストボックスからデータを入れることはできましたが、この後、「検索」ボタンを押さなくてはなりません。 そうではなく、FLASHの検索ボタンをおしたら検索結果が出るようにしたいのです。 上記のcgiファイルをどのように変更すればいいのでしょうか?

    • ベストアンサー
    • CGI
  • select値でのフォームのaction値の変更

    以下のようなフォームでselectの値によって PHPでactionのURLを変更させるようなことは出来るでしょうか。 <form name="form" method="GET" action="ここをselect値により変更"> <input type="text" name="word" id="word" value="" /> <select name="select" id="select"><option selected="selected" value="01">値01</option> <select name="select" id="select"><option selected="selected" value="02">値02</option> <select name="select" id="select"><option selected="selected" value="03">値03</option> </select> </form> 以上、どうぞ宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • プルダウンメニューでフォームのターゲット先を変更したい。

    プルダウンメニューでフォームのターゲット先を変更する方法をしえてもらえませんか? 下記の様にすると_topを指定しても新しいウィンドウが開いてしまいます。 <FORM name="test2" action="http://hoge.cgi" target=yyy.value> <INPUT type="text" size="34" name="word"><SELECT name="search"> <OPTION value="yahoo" selected>Yahoo!Japan</OPTION> <OPTION value="google">google</OPTION> </SELECT> <SELECT name="yyy"> <OPTION selected>窓選択</OPTION> <OPTION value="_blank">別窓</OPTION> <OPTION value="_top">同窓</OPTION> </SELECT> <INPUT type="submit" value="検索"> </FORM>

  • cgi の入力チェック

    ***** HTML ***** <TD> <INPUT type="radio" name="ABC_*" value="登録する">登録する  <INPUT type="radio" name="ABC_*" value="登録しない">登録しない </TD> ***** CGI ***** $family = "ABC"; if($name eq "$family"){ $family=$value; } 現在、上記のような記述で作っているのですが、 チェックを入れても、入れなくても、「入力エラー」 になりません。 他の項目については、OKなんですが。。。 どのように、入力チェックをすればいいのですか? **ちなみに、OKな項目の記述です。** ***** HTML ***** <TD>登録カテゴリー:</TD> <TD> <select name="カテゴリー_*"> <option value="" selected>選  択 <option value="自動車関連">自動車関連 <option value="お役立ちサイト">お役立ちサイト <option value="HP作成支援">HP作成支援 <option value="お店のHP">お店のHP <option value="個人のHP">個人のHP <option value="その他">その他 </select></TD> ***** CGI ***** $catego = "カテゴリー"; if($name eq "$catego"){ $catego=$value; }

    • ベストアンサー
    • CGI
  • JavaScriptで項目入力の制限分岐の仕方

    WEBアンケートフォームを作る際、JavaScriptで項目入力の制限分岐の仕方を教えてください WEBアンケートフォームを作ろうとしているのですが、条件がいくつかありうまく作れません。 どなたかこの様な条件分岐でうまくいく方法をご存知の方、あるいは例がのっているWEBチュートリアルのページをご存知の方いらっしゃいませんか? 【以下、作りたいフォームの項目】 選択肢A~E(ラジオボタンによる選択)とプルダウンメニュー、テキストボックス入力フィールドがある。 --------------- A プルダウンメニュー B C D E テキストボックス --------------- テキストボックスはグレーアウトでデフォルトは入力不可になっている。 プルダウンメニューもデフォルトでは選択ができないようになっている。 Aを選んだらプルダウンメニューが選択可。 C、D、Eを選んだら、テキストボックスが入力可能になる。 ■■■ いろいろOK Wave内を調べたり、ググって調べて以下のようなソースを書いてみたのですが、 FireFoxやGoogleCromeだとうまく動きません。 これを動かせるようにしていただいても、助かります。 <input type="radio" name="radio1" value="AAA" id="r1" checked onclick="this.form.select1.style.display='inline';this.form.select2.style.display='none';this.form.select3.style.display='none';this.form.select4.style.display='none';this.form.select5.style.display='none'"><label for="r1">AAA</label><select name="select1" style="display='inline'"><option value="" selected> ------------- </option><option value="111">111</option><option value="222">222</option><option value="333">333</option><option value="444">444</option><option value="555">555</option><option value="666">666</option><option value="777">777</option><option value="888">888</option><option value="999">999</option></select><br /><input type="radio" name="radio1" value="BBB" id="r2" onclick="this.form.select2.style.display='inline';this.form.select1.style.display='none';this.form.select3.style.display='none';this.form.select4.style.display='none';this.form.select5.style.display='none'"><label for="r2">BBB</label><input name="select2" style="display='none'"><br /><input type="radio" name="radio1" value="CCC" id="r3" onclick="this.form.select3.style.display='inline';this.form.select1.style.display='none';this.form.select2.style.display='none';this.form.select4.style.display='none';this.form.select5.style.display='none'"><label for="r3">CCC</label><input name="select3" style="display='none'"><br /><input type="radio" name="radio1" value="DDD" id="r4" onclick="this.form.select4.style.display='inline';this.form.select1.style.display='none';this.form.select2.style.display='none';this.form.select3.style.display='none';this.form.select5.style.display='none'"><label for="r4">DDD</label><input name="select4" style="display='none'"><br /><input type="radio" name="radio1" value="EEE" id="r5" onclick="this.form.select5.style.display='inline';this.form.select1.style.display='none';this.form.select2.style.display='none';this.form.select3.style.display='none';this.form.select4.style.display='none'"><label for="r5">EEE</label><input name="select5" style="display='none'"> ■■■ よろしくお願いします。

  • セレクトボックスとチェックボックスを使った絞込み検索

    Yomi-Searchについての質問なのですがタイトルの通りの質問でチェックボックスを使った絞り込み検索では 01_03 04_01 と検索結果に表示されるのですがセレクトボックスとチェックボックスを組み合わせて絞り込み検索をしてみると 01_0304_01 とこのようにカテゴリとカテゴリの間にスペースが入らず絞り込み検索が出来ません‥ タグはこのように書きました。 <FORM action="http://www..." method="get" target="" name="form1"> <INPUT type="hidden" name="mode" value="search"> <INPUT type="hidden" name="page" value="1"> <INPUT type="hidden" name="sort" value="mark"> <INPUT type="hidden" name="engine" value="pre"> <INPUT type="hidden" name="kn" value="30"> <SELECT size="1" name="word"> <OPTION type="selected" value="">--------</OPTION> <option value="01_01" name="word1">○○○</option> <option value="01_02" name="word2">○○○</option> <option value="01_03" name="word3">○○○</option> </SELECT><BR> <BR> <INPUT type="checkbox" name="word4" value="04_01">○○○<BR> <INPUT type="checkbox" name="word5" value="04_02">○○○<BR> <INPUT type="checkbox" name="word6" value="04_03">○○○<BR> <BR> <INPUT type="submit" value=" 検 索 "> <INPUT type="reset" value="リセット"> &nbsp; </FORM> 全くの初心者ですいませんが良きアドレスなどをお願いします。

  • フォームで絞込み検索機能を持たせるには?

    CGIでキーワード検索システムを使用していますが、FORM等であらかじめ一部の語句だけを設定してお き、絞込み検索機能も持たせたいと考えています。ただデータを渡す際にうまくいきません。 どなたかデータの引渡しに関して、いい方法があればご教授ください。 使用想定例: <form method="POST" action="./search.cgi" enctype="multipart/form-data"> <select name="search"> <option value="" selected="selected">指定なし</option> <option value="ア行">ア行</option> 中略 <option value="ワ行">ワ行</option> </select> <select name="search"> <option value="" selected="selected">指定なし</option> <option value="Men">男性</option> <option value="Women">女性</option> </select> <select name="search">選択項目</select> は追加したいと考えています。 <input type="text" name="search" size="30" value="" /> <input type="submit" name="SUBMIT" value="検索" /> </form> タグ入力で  http://xxxx.com/search.cgi?search=ア行,Men と入力した場合、絞込み検索ができるようにはなっています。(カンマでand検索) ただ、自分の考えている例だと  http://xxxx.com/search.cgi?search=ア行&search=Men&search= のようにデータが渡されてしまい、検索対象全てがヒットしてしまいます。 フォームのNAME属性が同じものを「,」で連結する。みたいな動作ができればベストなんでしょうが 。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • 入力チェック

    下記の入力チェックのときに「【選択して下さい】」という文字列なら「だめ」と表示したいのですが、項目が多いのでヘッダー部分でdocument.kansou.yubin.valueのようのようにテキストボックスの名称を1個ずつ指定せずに一括でできないでしょうか。イメージとしてはdocument.kansou.form(i).valueみたいな?感じのまとめ処理がしたいのですが。 現在→yubinが「【選択して下さい】」ならダメ jusho1が「【選択して下さい】」ならダメ ・・・・ やりたいこと→どれかのテキストボックスが「【選択して下さい】なら「だめ」 <HTML> <HEAD> <TITLE>入力チェック</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function submitCheck(){ if (document.kansou.yubin.value=="【選択して下さい】"){ alert("だめ"); return false; } else return true; } //--> </SCRIPT> </HEAD> <BODY> <FORM NAME="kansou" ACTION="test.cgi" METHOD="post" ENCTYPE="text/plain" onSubmit="return submitCheck()"> <SELECT NAME="yubin">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <SELECT NAME="jusho">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <SELECT NAME="jusho2">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <INPUT TYPE="submit" VALUE="送 信" onClick="document.kansou.name.value=''"> </CENTER> </FORM> </BODY> </HTML>

  • XMLの値をリストボックスで選択したい

    XSLTで悩んでいます・・・ XMLが以下の内容で、 <aaa><bbb>123</bbb></aaa> XSLTでテキストボックスに表示をさせる場合 <input type="text" name="hoge" value="{/aaa/bbb}"> となりますが、 セレクトボックスでXMLと同じ値を選択させたいのです。 <select name="hogesel"> <option value="121"> <option value="122"> <option value="123"> ←これを選択させたい </select> XSLT、JavaScript等使用してselectedが行える方法がありますでしょうか? ご存知の方がいらっしゃいましたらご教授願います。

    • 締切済み
    • XML

専門家に質問してみよう