• ベストアンサー

セレクトボックスのボタンにリンクを張りたい

下記のHTML文においてセレクトボックスの表示ボタンを押したら、リンク先にジャンプをしたいのですがその方法を教えていただけませんか. <FORM ACTION='' METHOD='POST'> <SELECT name="code"> <OPTION value='1'>A</OPTION> <OPTION value='2'>B</OPTION> </SELECT> <INPUT TYPE=SUBMIT VALUE='表示'>

  • PHP
  • 回答数4
  • ありがとう数2

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

  • ベストアンサー
  • chupark
  • ベストアンサー率41% (90/218)
回答No.4

>$fee=$_REQUEST['code']; //ここで$feeに値が代入されない? この部分なんですが、 $fee=$_POST['code']; これでもだめでしょうか? POSTで値を送信しているので $_POSTで受け取るのではないでしょうか? 値がPOST送信されているかどうかはページのどこかで <?PHP var_dump($_POST); ?> などとしてみてPOSTで送信された変数に何が格納されているのかをダンプしてみてもよいかもしれません。

miya2003
質問者

お礼

セレクトボックスで選択された値をPOSTで次の画面に送り、そこで計算しました。 この計算を前の画面で実行していたのでうまくなかったのです。ありがとうございました。

miya2003
質問者

補足

ありがとうございます。 $fee=$_POST['code'];にして実行しました。ところが、直ちに画面が移動しますので、<?PHP var_dump($_POST); ?>の値が確認できませんでした。 セレクトボックスの表示をクリックすると直ちに画面が切り替わるので、$fee が計算されないままかなと思います。 そこで、もうひとつボタンを追加し、セレクトボックスのボタンはPOSTだけにし、もうひとつのボタンで画面切替と値の引継ぎをしたらうまくいきました。 もう少し試してみます。ありがとうございました。

その他の回答 (3)

  • chupark
  • ベストアンサー率41% (90/218)
回答No.3

再度回答です。 おそらく、この部分に問題があります。  <INPUT type="hidden" name="fee" value=$X > ここは完全にHTML部分ですよね? それならば、お察しのとおり$Xがきちんと渡っていないはずですので、ここにPHPを埋め込む形で、  <?PHP echo "<input type=\"hidden\" name=\"fee\" value=" . $X . ">"; ?> このように書き換えてみてはいかがでしょう? HTMLでは $X が変数だと認識されておらず、したがって変数に格納されている値がきちんと出力されていないはずです。 $XはPHPでの変数なので、その部分自体をPHPで出力すれば表示されるという理屈です。

miya2003
質問者

補足

ご回答ありがとうございます。 ご指摘のとおりでしたので、早速プログラムを変更しました。うまく値が引き継がれないので、下記のようなシンプルなプログラムでの結果報告が次のようになります。 1)セレクトボックスをクリックすると次の画面に変わります。 2)同時にセレクトボックスで選ばれた値を使って$fee(次の画面に渡す値)をもとめ、これを次の画面が$_POST['fee']を使って引き継ぎます。 3)$feeが次の画面で引き継がれませんでした。 ($feeを計算する前に画面が切り替わってしまうようです。) <HTML> <HEAD> <TITLE>test</TITLE> </HEAD> <BODY> <FORM ACTION='a.php' METHOD='POST'>//ここで次の画面を表示 <?PHP $fee=$_REQUEST['code']; //ここで$feeに値が代入されない? echo "<INPUT type=\"hidden\" name=\"fee\" value=\"$fee\">"; ?> <SELECT name="code"> <OPTION value='1'>a</OPTION> <OPTION value='2'>b</OPTION> </SELECT> <INPUT TYPE=SUBMIT VALUE='表示'> </FORM> </BODY> </HTML> お気づきのことがあればご教示いただけませんか。

  • chupark
  • ベストアンサー率41% (90/218)
回答No.2

カテゴリからしてPHPでのご質問ということでよろしいでしょうか。 PHPが使える環境である前提で回答させてもらいます。 Form action="" とされているところをみるとこのHTML文自体にPOSTするおつもりのようですから、このページの先頭あたりにPHPを埋め込んでおいてはどうでしょうか。 たとえば value=1 のときに A.html value=2 のときに B.html へ飛ばせるとするとき、 <?PHP switch($_POST['code']){ case 1: headers('Location:A.html'); break; case 2: headers('Location:B.html'); break; default: break; } ?>

miya2003
質問者

補足

ご回答ありがとうございます。 ご推察のとおりです。PHPを使おうとしています。 セレクトボックスの表示ボタンを押したらa.phpにジャンプし、セレクトボックスの値を使って演算した値($X)をa.phpに渡す予定です。そのため、教えたいただいたswitchを使う方法は難しそうです。 1)試行錯誤して下記の方法でa.phpを表示できましたが、値($X)をa.phpに渡せません。 表示した方法はFORMのなかで、<FORM CTION='A.php' METHOD='POST'>を使いました。 2)<INPUT type="hidden" name="fee" value=$X >を HTML文の中で使用しています。PHP文のなかで使用していないのでPHP文のなかで演算した値($X)が0のままなのではと思っています。 3)a.phpではではこの値を$y = $_POST['x'] ;で受け取ろうとしてます。 PHP初心者です.よろしくお願いいたします。

  • Riruka
  • ベストアンサー率37% (51/137)
回答No.1

プルダウンメニューからリンク先に飛ぶにはjavascriptが必要です。 javascriptのサンプルページなどに載ってますよ☆ 下記URLのリンクのところにも載ってます。

参考URL:
http://www.moon.sannet.ne.jp/redcap/
miya2003
質問者

お礼

早速のご回答ありがとうございます。 教えていただいたURLからjavascriptについて調べてみます。プルダウンメニューの表示ボタンを押したら、プルダウンメユーで選択したデータをリンク先に引渡したいのですが、javascriptを使う以外方法はないのでしょうか。

関連するQ&A

  • formを連続してピッタリと上下に並べたいのですが

    DreamveaverでHTMLの編集をしております。 formを連続してピッタリと上下に並べたいのですが、 どうしてもformとformの間に隙間ができてしまいます。 これは仕方がないのでしょうか? 具体的には <form name="form1" method="post" action=""> <select name="select1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type=submit value="order"> </form> <form name="form1" method="post" action=""> <select name="select2"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type=submit value="order"> </form> な感じなんですが。 どなたかアドバイスいただけると嬉しいです。

  • セレクトボックスで指定した任意の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>

  • セレクトボックスの選択項目を変える

    セレクトボックスの選択項目を変えるには どうすればいいですか? <FORM action=./ method=post> <SELECT name=server> <OPTION value=2 selected>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> </SELECT> </FORM> こういうフォーム(FORMやOPTIONにnameがない)で [4]を選択したいです このフォームを書き換えないで(スクリプトでの書き換えなら○) どうにか変えることはできないでしょうか? IEのみの対応でいいので、お願いします

  • ラジオボタンでうまくするには・・・・

    初めまして。 現在下記のプルダウン形式で、一つの価格が同じなので問題なく動くのですが <FORM action="cart/sys/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> <SELECT name=sur> <OPTION value="" selected>購入数量</OPTION> <OPTION value=1>1</OPTION> <OPTION value=2>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> <OPTION value=5>5</SELECT> <INPUT type=submit value=カートに入れる> </FORM><BR> <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> </FORM> 同じ商品で1・2・3・4・5のそれぞれに単価が変わる設定をしたいのですが、うまくいく方法が見つからないです。 ラジオボタン形式で作ってみたものの・・・・ <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=submit value=カートに入れる> </FORM> <FORM> <INPUT type="radio" name="name1" value="2000">1袋<BR> <INPUT type="radio" name="name1" value="3900">2袋<BR> <INPUT type="radio" name="name1" value="5800">3袋<BR> <INPUT type="radio" name="name1" value="7500">4袋<BR> <INPUT type="radio" name="name1" value="8500">5袋</FORM> としてみましたがうまくいきません。 なにか方法ございましたら、ご教授いただければと思います。

    • ベストアンサー
    • HTML
  • セレクトボックスの内容を次のページで受け取る方法

    <form action="./check.asp" method="POST"> <table> <tr> <td> <select name="year"> <option value="2006" >2006</option> <option value="2007" >2007</option> <option value="2008" >2008</option> </select> </td> </tr> <tr> <td align="center"><input type="submit" value="確認する"></td> </tr> </table> </form> として 次のページで YEAR =Trim(request("year")) Response.Write YEAR で受け取り表示しようとしていますが取れません。なぜですか?教えてください

  • form 内 onChange

    恐れいります。 <form>内で、もう一つ<form>を作成し、送信したいのですが、 なかなかうまくいきません。form内のformは、selectボックスで、選択時に自ページにsubmitさせるようにしたいのですが。。 <form action="./xxx.cgi" method="POST"> <input type="text" name="xxx"> <form action="./" method="POST"> <select name="YYY" onChange="this.form.submit()"> <option value="ddd">ddd <option value="eee">eee </select></form> <input type="text" name="xxx"> <input type="submit" value="送信"> </form> よろしくお願いします。

    • ベストアンサー
    • HTML
  • 複数のセレクトボックスを1つにまとめて受け渡すには

    現在"年"と"月"のセレクトボックスがあり下記のように受け渡されています <form action="./search.php" method="GET">  <select name="year">   <option value="2010">2010年</option>   <option value="2011">2011年</option>  </select>  <select name="month">   <option value="1">1月</option>   <option value="2">2月</option>   <option value="3">3月</option>      ・   <option value="12">12月</option>  </select>  <input type="submit" value="検索"> </form> 受け取り側 http://www.###.jp/search.php?year=2011&month=11 となっています。 これを dateに一まとめにして受け取りたいですが http://www.###.jp/search.php?date=201111(2011-11でも可) 選択するプログラム側の修正方法を教えて欲しいのですが。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 読み込む外部スクリプトをセレクトボックスを使って選べないでしょうか?

    お世話になります。 フォーム内に配置した、1から5までの数字を選べるセレクトボックスを使って、そのフォーム内に読み込む.jsファイルを選択することは出来ないでしょうか? 外部ファイルには、UsualSet.js、EmergencySet.js、PauseSet.jsなどがあって、そのスクリプトファイルの中身は document.write("<input name=\"youbi\" type=\"hidden\" value=\"土曜\"><input name=\"codenumber\" type=\"hidden\" value=\"732\"><input name=\"busho\" type=\"hidden\" value=\"経理\">"); とかいった感じになっています。 つまり、セレクトボックスで何番を選ぶかによって、CGIに渡す値を$youbiと$codenumberと$bushoとの3つ全ていっぺんに変更出来るようにしたい訳です。 しかし、そのセレクトボックスにどういう仕掛けをしたら良いかわからなくて困っています。 まさか、 <FORM ACTION="pro.cgi" METHOD="POST">  <select name="kazu">   <option value="<script language="javascript" src="UsualSet.js>" selected>1</option>   <option value="<script language="javascript" src="EmergencySet.js>" >2</option>   <option value="<script language="javascript" src="PauseSet.js>" >3</option>   <option value="<script language="javascript" src="MorningSet.js>" >4</option>   <option value="<script language="javascript" src="FulleSet.js>" >5</option>  </select>   <input type="hidden" name="kaijou" value="22890">  <input type="hidden" name="boxnumber" value="62">  <input type="submit" name="Submit" value="送信"> </FORM> なんてわけに行かないですもんね。 どうしたらいいかおわかりの方がいらっしゃいましたら、どうかよろしくお願い致します。

  • select値をhiddenのvalueに渡したい

    selectで選択されたvalue値を下のhiddenのvalue値(id)に渡して、 hiddenのvalue値(id)がselectで選択されたvalue値になるような フォームを作りたいのですが、作り方をお教え頂ければ幸いです。 <form name="form" method="get" action="index.cgi"> <select name="mode"> <option value="100023">和書</option> <option value="100241">洋書</option> <option value="100524">エレクトロニクス</option> </select> <input type="hidden" name="serch_janru" value="id" /> <input type="text" name="keyword" value="keyword" /><input type="submit" name="submit" value="商品を検索" /> </form> ソース等、具体的にお教え頂けると助かります。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • HTML
  • セレクトボックスの操作

    <select name="example1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="1" value="追加"> 例えば、上記のセレクトボックスの3を選択して送信ボタンを押したら、3以外の4つの数字の値を持ったセレクトボックス(select name="example2)を出現させたいのです。(example1を残したまま) 選択した数字以外の値を持ったセレクトボックスを出現させたいです。 <select name="example2"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit"name="2" value="追加"> 上記のようになります。example2の1を選択し送信したら <select name="example3"> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 上記のようになります。 上記の手順でセレクトボックスが3つに増えた場合のソースは次のような感じに <select name="example1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="1" value="取り消し"> <select name="example2"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit"name="2" value="取り消し"> <select name="example3"> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 取り消しを押した場合、そのセレクトボックスを削除し、一番新しいセレクトボックス(example3)に削除された値を追加したいです。 example2を取り消した場合、 <select name="example3"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 上記のようになります。 どのように記述すれば実現可能でしょうか? ご教示頂けますと幸いです。 宜しくお願いいたします。

専門家に質問してみよう