プルダウンの選択値のPOSTについて

このQ&Aのポイント
  • PHPを使用して、検索条件としてプルダウンを設け、選択された情報を別画面に渡し、絞込みを行いたい場合、ラジオボックスの値も一緒に渡す方法を教えてください。
  • 特定の画面にプルダウンがあり、選択された値を別の画面に渡して絞込みを行うためには、どのような方法を使えば良いでしょうか。
  • プルダウンやラジオボックスの選択値を別画面に渡し、絞り込みを行いたい場合、PHPを使用してどのように記述すれば良いでしょうか。
回答を見る
  • ベストアンサー

プルダウンの選択値のPOSTに関して

プルダウンの選択値のPOSTに関して ある画面に検索条件としてプルダウンを設け、その中のどれでも構わないが選択された 場合に別画面にその情報を渡し、別表の絞込みをかけるようなソースをPHPも使って記述 しています。 その際に、プルダウンの情報は連携できたものの、それだけでなくラジオボックスで選択 された情報も受け渡ししたいと考えています。 このような場合はどのように記述すれば良いでしょうか。。。 わかりにくい内容で申し訳ありませんが、教えて頂ければ幸いです。 よろしくお願いします。 <script> function getDataPost( serverURL, objID ,obj){ var ajax = createXMLHttpRequest(); ajax.open( "POST", serverURL ); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange=function(){  if(( ajax.readyState == 4 ) && ( ajax.status == 200 )){   if(objID!=""){    var obj = window.parent.b.document.getElementById( objID );    obj.innerHTML = ajax.responseText;   }  } } ajax.send( obj.name+"="+obj.value ); } </script> <HTML> <HEAD> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>検索条件</title> <base target="main"> </HEAD> <BODY> <td><font color=red SIZE="2"> <td align="right" style="padding:0px 13px;font-size:16px"> <form method="POST" action="AAA.php" target="sub"> <p>部署名:<select name="fuga" onchange="getDataPost('AAA.php','hoge',this)"> <?php $count = 0; for($i=0;$i<$row;$i++) { print("<option value='部署コード'> 部署コード</option>\n"); $count++; } print("</select>\n"); ?> //********ここから下の選択したラジオボックスの値を一緒にPOSTしたい**********// <input type="radio" name="q1" value="1" checked> A表 <input type="radio" name="q1" value="2"> B表 //**************************************************************************// </form> <div id="hoge"></div> </BODY> </HTML>

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

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

場合の受け取り側はどのように記述すれば良いでしょか。。。 ==>それは... 別表の絞込みをかけるようなソースのロジックがわからないので、 ソースを書こうとしても、どうしようもないですが、 POSTされた値の取得なら、AAA.phpの中で  $_POST['fuga'] <------ <select name="hoge">のvalue  $_POST['q1'] <------ チェックされた<input type="radio" name="q1">のvalue に格納されてます。 http://www.php.net/manual/ja/language.variables.external.php 今回の場合は、value値はユーザーが手で入力するものじゃないから、 htmlspecialcharsとかuridecodeとか不要だし、送る時もuriencode する必要なかったです。

yurix_1
質問者

お礼

ありがとうございます!!!  できました!!!! 本当にありがとうございました!!!

その他の回答 (2)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

いろいろ、細かいところミスってました。 ↓です。 <script type="text/javascript"> function getDataPost( serverURL, objID ,obj){ var ajax = createXMLHttpRequest(); ajax.open( "POST", serverURL ); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange=function(){  if(( ajax.readyState == 4 ) && ( ajax.status == 200 )){   if(objID!=""){    var obj = window.parent.b.document.getElementById( objID );    obj.innerHTML = ajax.responseText;   }  } } var other_parm=""; var elms=obj.form.elements; for (var i=0;i<elms.length;i++){ if(elms[i].type=="radio"){ if(elms[i].checked==true) other_parm += "&" + elms[i].name+"=" + elms[i].value } } ajax.send(encodeURIComponent(obj.name+"="+obj.value + other_parm)); } </script>

yurix_1
質問者

補足

ソースまで記述して頂き、本当にありがとうございます。 もう1点だけ教えて下さい。 この場合の受け取り側はどのように記述すれば良いでしょか。。。 何から何まで聞いて申し訳りませんが、よろしくお願いします。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

どのradioボタンがチェックされてるか、 getDataPost(){}内で判定して、 ajax.send( obj.name+"="+obj.value );に 追加してしまいましょう var other_parm=""; var elms=obj.form.elements; for (var i=0;i<elms.length;i++){ if(elms[i].type="radio" && elms[i].checked==true) other_parm += "&" + elms[i].type+"=" + elms[i].value } ajax.send(uriencode(obj.name+"="+obj.value + other_parm)); の部分で、そのradioボタンのnameと値も渡せばよいのです。

yurix_1
質問者

補足

ご回答ありがとうございます。 無知なもので大変申し訳ありませんが、この記述をソースのどの部分に追加させれば 良いのでしょうか。。。 getDataPost内に追加しましたが、どうしてもエラーとなってしまう為、、、 メッセージ: 'form.elements' は Null またはオブジェクトではありません。 教えて下さい。 よろしくお願いします。

関連するQ&A

  • ajax でのデータ受け渡しに関して

    ajax でのデータ受け渡しに関して わかりにくい内容で申し訳ありません。 現在、PHPで作成されているプログラムの中に、ajaxを組み込みたいと考えています。 処理の動きとしては、あるプルダウンが選択された場合、すぐさまその値をもとにしてDBへ 検索しに行くというものです。 通常、PHPだけの処理の場合、POST等を用いて、ボタンが押されたら違うphpファイルへ値を 送る事が可能かと思われます。 その処理をajax で選択されたらすぐに検索、表示というような動きをしたいと考えて います。 但し、同じソース、画面上の中でなら、以下のような記述で表示させる事は可能かと 思われますが、HTMLで分割した画面で、上段で選択されたプルダウンの値をもとにして、検索 された結果を下段に表示させたいと考えています。 そもそも、ajaxでは同じ画面上での受け渡ししかできず、上記のように分割されたものでは 不可能なのでしょうか。。。 初歩的な内容で申し訳ありませんが、教えて頂きたいと思います。 《記述内容》 ※ 現状では以下のようなサンプル記述をもとに、自画面(同一)上では表示が可能となっています。 <script> function createXMLHttpRequest(){ if( window.XMLHttpRequest ){ return new XMLHttpRequest(); }else if( window.ActiveXObject ){ try{ return new ActiveXObject( "Msxml2.XMLHTTP" ); }catch(e){ return new ActiveXObject( "Microsoft.XMLHTTP" ); } } return null; } function getDataPost( serverURL, objID ,obj){ var ajax = createXMLHttpRequest(); ajax.open( "POST", serverURL ); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange=function(){ if(( ajax.readyState == 4 ) && ( ajax.status == 200 )){ if(objID!=""){ var obj = document.getElementById( objID ); obj.innerHTML = ajax.responseText; } } } ajax.send( obj.name+"="+obj.value ); } </script> <select name="fuga" onchange="getDataPost('hogehoge.php','hoge',this)"> <option value="">---</option> <option value="1">1</option> <option value="2">2</option> </select> <div id="hoge"></div> よろしくお願いします。

    • ベストアンサー
    • AJAX
  • 選択された値をセッションで保存したい

    ラジオボタンで選択された値をセッションで保存し、DBまで持って行きたいのですが、どのようにすればよいでしょうか?なお、ラジオボタンからはPOSTで渡しています。どなたかわかる方ご教授お願いします。流れは【a.php => b.php => c.php => d.php => DB】c.phpにラジオボタンがあります。 [c.php]はこのような感じです。 <form name="form1" method="post" action="d.php"> <input type="radio" name="color" value="なし" >なし <input type="radio" name="color" value="赤">赤 <input type="radio" name="color" value="青">青 <input type="submit" name="Submit" value="送信">

    • ベストアンサー
    • PHP
  • フォームPOST後「戻る」時のチェック値の取得

    フォームでPOSTをしたあと、history.backや戻るボタンで戻ったときに、POST時に選択したラジオボタンのcheckedもfalseになってしまうのですが、チェックされているものを取得することはできるのでしょうか。 ■form部分 <form name="form1" method="post" action="..."> <input type="radio" name="radio1" value="1">1<br /> <input type="radio" name="radio1" value="2">2<br /> <input type="radio" name="radio1" value="3">3<br /> </form> ■JavaScript部分 var radio1 = document.form1.radio; for(var i=0;i<radio1.length;i++) { if (radio1[i].checked) { alert(i); } } このようなコードで、選択してPOST後、「戻る」で入力ページ表示時にJavaScriptを実行しても、 radio1[i].checkedは全てfalseになってしまいます。 また選択→POST→戻る→そのままPOSTとすると、選択したvalue値は正しくサーバーに送られます。 「戻る」でのページ表示時に選択したものを取得する方法があれば教示いただけますか。

  • プルダウンメニューが文字化けする

    タイトル通りプルダウンメニューが文字化けしてしまいます。javaを使ってホームページに表示させています <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <!--メニュー↓--> <script language="javascript"> <!-- function navi(obj) { url = obj.options[obj.selectedIndex].value; if(url != "") { location.href = url; } } //--> </script> <form method=post> <select name="navi">  <option value=""> --メニュー -- <option value="http://">TOPページ <option value="http://">特別企画 <option value="http://">ご挨拶 <option value="http://">ご協力 <option value="http://">PC版 <option value="http://">ブログ </select> <input type=button value="ジャンプ" onClick="location.href = this.form.navi.options[this.form.navi.selectedIndex].value"> </form> <!--メニュー↑-->

  • $POSTの送信

    POSTデータを送信する方法を教えてください。 PHPのPOSTを用いたプログラミングを行っています。 以下のように、前ページ受信したPOSTの内容(「aaa」)を hiddenで送信したいと思いましたが 次ページ(result.php)にて「$name」と受信してしまいます。 (前略) <?php $name = $_POST['name']; echo $name; ?> <form action="result.php" method="POST"> <input type="hidden" name="name2" value=$name> <input type="radio" name="name3" value=" (以下略) 説明下手ではありますがご回答頂きたいと思います。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • ラジオボタンとプルダウンで困っています。

    教えてgooの質問等を参考に携帯のサイトを作っております。 どうしても分からない部分がありましたので教えてください。 日付を選択するフォームを作成しており、内容は ラジオボタンで「今日の日付」「指定日」のどちらかを選択。 「指定日」を選択した場合は「指定日」の下にプルダウンで年月日を選択できるようにしております。 今日の日付は次のページにデータを渡すことができるのに 「指定日」の年月日はどうしても次のページに渡すことができません。 <form action=comf.php method=POST> <input type=radio checked name=day value="<?php echo"".$now_date = date("Ymd").""?>">1:今日 <br> <input type=radio name=day value=○○>3:指定日 <br> <select name="year" > <option value="2006">2006</option> </select> 年 <select name="month" > <option value="01">01</option> 月 <select name="date"> <<option value="01">01</option> 日 <input type=submit value="確認画面へ"> 指定日の「value=○○」には何を入れればよろしいのでしょうか? ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • ラジオボタンとプルダウンを連動させたい

    ラジオボタンとプルダウンを連動させたい いつもお世話になっております。 ラジオボタンのvalue値に連動してプルダウンの内容が変わるということがしたいと思い、 数日前からいろいろと格闘していましたが、煮詰まったため相談に伺いました。 http://okwave.jp/qa/q2928590.htmlのANo.2の回答 -------------------------------------------------------------------- <script language="javascript"> function changeFunc(obj){ var v=obj.value; var f=obj.form; for(var i=0;i<f.length;i++){ if(f[i].type=="checkbox"){ if(f[i].className==v || v=="") f[i].disabled=false; else f[i].disabled=true; } } } </script> <form> <select name="genre" onChange="changeFunc(this)"> <option value="">食べ物</option> <option value="grain">穀物</option> <option value="fruit">果物</option> <option value="meat">生き物</option> </select> <br /> <input type="checkbox" value="お米" class="grain">お米<br /> <input type="checkbox" value="そば" class="grain">そば<br /> <input type="checkbox" value="りんご" class="fruit">りんご<br /> <input type="checkbox" value="みかん" class="fruit">みかん<br /> <input type="checkbox" value="さかな" class="meat">さかな<br /> <input type="checkbox" value="豚肉" class="meat">豚肉 </form> -------------------------------------------------------------------- を参考にいろいろと試してはみたのですが、こちらは「プルダウン→チェックボックス」で、 まったく逆でどうしたら良いのかまったくわかりませんでした。 他のウェブサイトの情報やサンプルも試したのですが、value値やname値他の問題でうまくできませんでした。 希望の仕様は ・ラジオボタンの選択肢によって、プルダウン(セレクトボックス)の内容が変わる(アイテムが消える、または選択できなくなる)。 ・ラジオボタン・プルダウン共にvalue値・name値は決まったものがある(プルダウンのvalue値は日本語) 以上です。 javascriptは素人ですので、わかりにくい質問になっているかもしれないのですが、お力を貸していただけましたら助かります。 よろしくお願いします。

  • phpのpostについて

    a.phpの値をb.phpにpostしたいのですがうまく値が渡せません post元にはname属性に変数を用いているのですがpost先でnameをどのように指定したらいいかわかりません <a.php> <form action="foo.php" method="POST"> <div id="button"> <input type="submit" name ="PostGo" value="postTime" style="margin-right:30px;" /> </div> <table> <?php for ($data = 1; $data < 5; $data++) { ?> <tr><td> <select name="test<?php echo $data?>"> <option value=1>1 <option value=2>2 <option value=3>3 <option value=4>4 </select> <?php } ?> </table></form> <b.php> <?php for($i=1;$i<5;$i++){ $test =($_POST['test']);←ここの部分のpostをどう指定したらいいかわかりません echo $test; } ?> ※$_POST['test' + $i] これでも取れませんでした

    • ベストアンサー
    • PHP
  • $_POSTのインデックスについて教えて下さい。

    よろしくお願いします。 shift-jis で以下を書いて実行すると、$_POST のインデックスのみ\x5b が \x5f に変換されてしまいます。 <?php  if ( !mb_internal_encoding('sjis') ) {   die();  } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head>  <meta http-equiv="Content-Type" content="text/html; charset=shift-jis">  <title>test</title>  <style type="text/css">   table { border:1px solid #AAA; }   th {padding:10px; border:1px solid #AAA; background-color:#EEE; }   td {padding:10px; border:1px solid #AAA; }  </style> </head> <body>  <table summary="">   <tr>    <th>KEY</th>    <th>VALUE</th>   </tr> <?php  foreach ( $_POST as $key => $val ) {   echo    '<tr>',    '<td>', $key, ' =&gt; ', bin2hex($key), '</td>',    '<td>', $val, ' =&gt; ', bin2hex($val), '</td>',    '</tr>';  } ?>  </table>  <form action="" method="post">   <input type="text" name="a" value="a" >   <input type="text" name="あ" value="あ" >   <input type="text" name="ー" value="ー" >   <input type="text" name="ゼ" value="ゼ" >   <input type="submit" value="send">  </form> </body> </html> なぜそうなるのか分からないのですが、説明のある所をご存知ないでしょうか? ちなみに、  windows + XAMPP + PHP5.3(ローカル)  linux 系 + apache2.x + PHP5.?? (レンタルサーバー) 両方そうなりました。 検索の仕方が悪いのかうまく情報を探し出す事ができませんでした。 そのほかにも変換されてしまう文字等あったら、あわせて教えて下さい。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • プルダウンで選択したCGIを動かしたい(ACTION=""をプルダウンで変更するには?)

    プルダウンで選択したCGIを動かしたい(ACTION=""をプルダウンで変更するには?) 以下の <option value="test1.cgi">テスト1  <option value="test2.cgi">テスト2 <option value="test3.cgi">テスト3 <option value="test4.cgi">テスト4 4つのプルダウンメニューを選択して、それぞれ別のCGIを動かすには どうしたらできますか? よかったら教えて下さい。javascriptで出来そうな気がするのですが… <FORM name="testname" method="post" ACTION="/cgi-bin/??????" > <TABLE> <TR><TD> テスト</TD> <TD bgcolor="#FFFFFF"> <SELECT name=""> <option value=""> <option value="test1.cgi">テスト1  <option value="test2.cgi">テスト2 <option value="test3.cgi">テスト3 <option value="test4.cgi">テスト4 </SELECT></TD> </TR> <TR> <TD bgcolor="#cccccc" width="150"> 開始日</TD> <TD bgcolor="#FFFFFF"> <input name="daysS" type="text" size="8"> </TD> </TR> <TR> <TD bgcolor="#cccccc" width="150"> 終了日</TD> <TD bgcolor="#FFFFFF"> <input name="daysE" type="text" size="8"> </TD> </TR> </TABLE> <BR> <INPUT type="submit"name="send"value="開始"> <INPUT type="reset" name="reset" valiu="消去"> </FORM>

専門家に質問してみよう