- ベストアンサー
phpと連動させるには?
- セレクトボックスの値を動的に変更する方法を教えてください。
- 大カテゴリーのセレクトボックスを選択すると、小カテゴリーのセレクトボックスが表示されるようにしたいです。
- php ajaxでの方法や参考になるサイトがあれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- fujillin
- ベストアンサー率61% (1594/2576)
- babu_baboo
- ベストアンサー率51% (268/525)
関連するQ&A
- AJAXでPHPの配列を用いたセレクトボックスの連動
AJAXでPHPの配列を用いたセレクトボックスの連動を行いたいと思っています。たとえば、 PHPで配列をセットしセレクトボックスを生成します。 1番目のセレクトボックスで1番目の項目を選択すると 2番目のセレクトボックスの内容が連動して変化する。 といった動きを目指しています。 2番目のセレクトボックスの内容もPHPで持って設定したいと考えています。 1番目のセレクトボックスのvalue値が2ならばajaxで通信して21から29までのkeyの配列を設定するという形式ですが。どのようにして良いかわかりません。 教えて下さい。
- ベストアンサー
- AJAX
- AJAX+PHPでセレクトボックスの連動
AJAX+PHPでセレクトボックスの連動をしようとしています。 function SelAjax(){ var x = $('#category1').val(); $.ajax({ type: "POST", url: "category.php", data: {"prm":x}, dataType: "json", success: function(data, status){ $.each(data,function(i) { $('#category2').append($('<option>').attr({ value: i }).text(data[i])); }); }, error: function(XMLHttpRequest, status, errorThrown){ alert("エラーが発生しました!"); } }); } としています。 PHP側で $CATEGORY2 = array( 1 => array( 1 => "a", 2 => "b", 3 => "c", 4 => "d", ), 2 => array( 1 => "e", 2 => "f", 3 => "g", 4 => "h", ), 3 => array( 1 => "i", 2 => "j", 3 => "k", 4 => "l", ), 4 => array( 1 => "m", 2 => "n", 3 => "o", 4 => "p", ), 5 => array( 1 => "q", 2 => "r", ), 6 => array( 1 => "s", 2 => "t", 3 => "u", ), ); $ary = array(); if($_POST["prm"]){ for($i=1;$i<=6;$i++){ if($i ==$_POST["prm"] ) $ary = $CATEGORY2[$i]; } } echo json_encode($ary); としています。 一回目に1番目のセレクトボックスを選択してAjaxでPOSTし2つ目のセレクトボックスを生成できました。 しかし、2回目として1番目のセレクトボックスを選択した際に、1回目にPHPから受け取った配列に積みあがってしまいます。 どのように対処すればいいかわかりません。 教えてください。
- ベストアンサー
- AJAX
- Ajaxで加工したページの初期化について
ページ上にテキストボックスやセレクトボックスがたくさんあります。 セレクトボックスAで選択した値に基づいて、セレクトボックスBやテキストボックスに一つの値を表示しています(セレクトボックスは選択不可状態になる)。 セレクトボックスAで選択しないときは、セレクトボックスBには予め選択肢が入っています。 セレクトボックスAで選択して、セレクトボックスBにデータを表示した後、 リセットボタンを押したらセレクトボックスBは初期状態の予め選択肢が入っている状態に戻したいです。 そして、セレクトボックスCには、別の選択肢を入れ直したいです。 このようなセレクトボックス、テキストボックスともに何十個もあるので、出来たら一括で初期状態に戻し、その後、セレクトボックスの選択肢の変更などのAjax加工をしたいと思っています。 ページのツールバーのページ更新ボタンを押すと、ページがリロードされて、初期化されるので、 window.location.reload(); と設定した後、さらにAjaxでセレクトボックスなどの変更をするプログラムを組んだのですが、 window.location.reload(); この後の処理が動いてくれません。 ページをリロードすると、その後の処理が無効?になってしまうのでしょうか。 一つずつセレクトボックスやテキストボックスのデータを削除して、さらに値をセットしてというのが効率が悪い気がして、 ページリロードのように、ページを初期化した後、必要なセレクトボックスやテキストボックスだけAjax処理をしたいなあと思うのですが、どのようにするのがいいのでしょうか。 効率のいいやり方をご存じの方がいらっしゃいましたらぜひ教えてください。 分かりづらいと思いますので、分からない点はご質問頂けたらと思います。 よろしくお願いいたします。
- ベストアンサー
- AJAX
- 複数の連動する同じ内容のセレクトボックスについて
こんばんわ。 よろしくお願いします。 複数の同じ内容のセレクトボックスが連動するモノを作りたいのですが、まったく解りません。 たとえば 初期値を『選択しない』とし、1~5までの値を選択出来るセレクトボックスが5つあるとします。 1つ目のセレクトボックスで『3』を選択したら、残りのセレクトボックスでは3を除いた1~5までの値を選択出来ます。 さらに2つ目のセレクトボックスで『2』を選択したら、残りのセレクトボックスでは2と3を除いた1~5までの値を選択出来きるといった、全てのセレクトボックスが連動した重複を許さないセレクトボックスを作りたいのですが、可能でしょうか?
- 締切済み
- JavaScript
- DBで新規追加したデータがAjaxで反映されない
いつもお世話になっております。 Apach・PHP・MySQLの構成でWEBアプリを作成しております。 データ表示画面でセレクトボックスを二つ設置して、 一つ目のセレクトボックスを選択した時、OnChangeイベントで Ajaxを利用し選択されたデータのキーに紐づくデータを取得して 二つ目のセレクトボックスに表示するといった処理を作りたいと考えています。 実際にプログラムを組み実装できたのですが、二つ目のセレクトボックスに表示する データを新規登録で追加して、再度一つ目のセレクトボックスを選択して データ表示をおこなっても、追加したはずのデータが表示されません。 ページロードや別画面から再度遷移してきても結果は同じなのですが、 一度ブラウザ(IE6.0)を閉じて再度接続してセレクトボックスを選択すると 追加したデータが表示されます。 以下が該当するAjax部分のソースです。 var Ajax; function CreateAjax(){ try{ Ajax = new ActiveXObject("Msxml2.XMLHTTP"); return Ajax; }catch(e){ Ajax = new ActiveXObject("Microsoft.XMLHTTP"); return Ajax; } } function fncAjax(strURL, strID){ try{ Ajax = CreateAjax(); Ajax.open("GET",strURL); Ajax.onreadystatechange = function(){ if(Ajax.readyState == 4 && Ajax.status == 200){ var obj = document.getElementById(strID); obj.innerHTML = Ajax.responseText; } } Ajax.send(null); }catch(e){ alert(e.description); } } function js_OnSelChange(){ try{ fncAjax("http://hogehoge.com/?key=" + document.form.selectdata.value, "ID"); }catch(e){ alert(e.description); } } どなたか対応策をご存知でしたら、ご教授願いいます。 以上。
- ベストアンサー
- JavaScript
- PHP+Ajaxでプルダウンの連動
お世話になっております。久しぶりですが、わからないところが出てきたので、質問させてくださいませ。 現在、PHP+MySQLでホームページを作っています。 A(大カテゴリ)、B(小カテゴリ)のそれぞれのプルダウンを持っていて、 MySQL上では、BはどのAに所属しているかが格納されています。 その上で、 PHPソース <script type="text/javascript" src="ajax.js"></script> Aの部分 <select name="category" id="category" onChange="changePack(this)"> <option value="">--</option> <option value="1">A-1</option> <option value="2">A-2</option> <option value="3">A-3</option> </select> Bの部分 <select name="pack" id="pack"> <option value="">--</option> </select> Ajax部分のソース // 検索結果画面初期表示用 function setList() { var Category = "0"; var Pack = "0"; setPackOption(Category); document.rsv_input.category.selectedIndex = 0; document.rsv_input.pack.selectedIndex = 0; } // カテゴリ選択時 function changePack(Category) { var Category; getResult(Category.value); } function getResult(Category) { //XMLHttpRequestオブジェクト生成 var xmlhttp = createHttpRequest(); if (xmlhttp == null) { return null; } var data = ""; data += "category=" + Category; sendRequest(xmlhttp, "POST", "result.php", false, data, callBack); } function callBack(xmlhttp) { var result = xmlhttp.responseText; var resArray = result.split(","); for (i=0; i<resArray.length; i++) { var packArray = resArray[i].split("/"); document.rsv_input.pack.options[i] = new Option(packArray[1], packArray[0]); } } relust.phpのソース $category = ( $_POST["category"] != "0" )? $_POST["category"] : ''; select文で「$category」を持つ、レコードから「小カテゴリ」のid、名称 を取得 $id = $Cols['id']; $name = $Cols['name']; $data .= ',' . $id . '/' . $name; echo($data); としておりますが、小カテゴリのプルダウンに$dataの中身が反映されません。(result.phpの$_POSTを$_GETに変更して単体で動かした場合は、$dataが読み取れる状態になります。) http://www.okushin.co.jp/information/Ajax_report/06_sample02.php を参考にさせていただいていますが、プルダウンの総数が違う。や、最終結果をテキストデータとしてhtml中に書き出すなど若干の相違点でつまずいています。 当方、PHP(0.5年)、JavaScript(0.5年)位の経験しか持ち合わせていないので、余計にわかってないだけかも知れません。 お手数をおかけいたしますが、修正箇所の指摘やその方法などを教えていただけませんでしょうか。よろしくお願いいたします。
- ベストアンサー
- PHP
- 郵便番号、都道府県、路線、駅名の連動した表示切替
郵便番号、都道府県、路線、駅名の連動した表示切替に困っています。 まず、郵便番号を入力して検索ボタンを押してセレクトボックスに都道府県を表示 次にその都道府県を見て路線のセレクトボックス内を変更 最後に路線を見て駅名のセレクトボックス内を変更 をしたいのです。 郵便番号を見て都道府県を表示させるところは http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html こちらを参考にしました。 都道府県、路線、駅名を表示させるところは http://express.heartrails.com/ こちらのサイトを参考にしてやっていました。 が、 PHPを使っていて、セッションで都道府県を保持している場合 ページを読み込んだときに、例えば「東京都」とセッション保持しているのに 都道府県のセレクトボックス内は空になってしまいます。 それと同時に路線と駅名も・・・。 なんとか表示できないでしょうか。 説明がわかりずらいと思いますが、よろしくお願いします。
- ベストアンサー
- JavaScript
- セレクトボックスの内容を連動
2つのセレクトボックスの内容を連動させて表示を変えたいと思っているんですが、これってJavascriptですか? 一つ目の内容の選択に応じて変更したいです。
- ベストアンサー
- JavaScript
- 連動させたいセレクトボックスについて。
こんにちは。DB+PHPが初心者のものです。 前にもここで質問させていただきましたが、 自分なりにコードを書いてみたので コードの訂正、ご教授をよろしくお願いいたします。 セレクトボックス1には、[table 1]の、種類が入り れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。 下記のようにソースを書いてみましたが、 table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(T_T) 動きとしては、table1のセレクトボックスで選択したら、その項目をDBへ問い合わせ、その項目に対応した、DBに登録されているtable2の値を二つ目のセレクトボックスに表示させたいです。 <html> <body> <select name="mkoumoku"> <option selected>-------------</option> <?php //DB接続 $dbcon=mysql_connect("localhost","abcd","defg"); //DB選択 mysql_select_db("zozozo"); //table1を取得 $res=mysql_query("select distinct * from table1"); while ($rows=mysql_fetch_array($res)) { echo "<option value=\"".$rows['id']."\">".$rows['kind']."\n"; } echo "</select>"; ?> <select name="skoumoku"> <option selected>-------------</option> <? //table1に連動して項目を変えたいところのコード $res1=mysql_query("select * from table2 where key =$_POST[mkoumoku] order by id"); while ($rows=mysql_fetch_array($res1)) { echo "<option value=\"".$rows['id']."\">".$rows['name']."\n"; } //Dbクローズ mysql_close($dbcon); ?> </body> </html>
- ベストアンサー
- PHP
- mysql+phpでコンボボックスの連動方法
*********************************************************** 以前の質問がわかりやすい書き方でしたので、お借りしています。 追加で質問したいのでそのまま引用させてもらいました。 *********************************************************** 以前の回答ではjavaが使われていましたが、mysql+phpのみで 完成させたい場合の方法を教えてください。 また、選択した2つのリストの結果をDBに書き込む方法も 教えてください。 *********************************************************** [table 1] id 種類 ---------- 1 野菜 2 果物 3 麺 [table 2] id key 名前 ---------------------- 1 1 にんじん 2 1 たまねぎ 3 1 ほうれん草 4 2 りんご 5 2 バナナ 6 3 うどん 7 3 ラーメン [table 1]のid と、[table 2]のkeyが 対応するように、連動したコンボボックスを作りたいと思って頑張っています。 コンボボックス1には、[table 1]の、種類が入り コンボボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるように したいと思っています。 たとえば、コンボボックス1で「果物」を選択した場合、 コンボボックス2では、「りんご」「バナナ」がコンボボックスに 表示されて選べるようになるようにするです。 単純に、mysqlからセレクトフォームに表示することはできましたが、 連動がどうやればいいのか、色々調べましたが 力不足で分かりませんでした。 コンボボックスを連動させるために、[table2]に「key」のフィールドを加えたので、 改良しようと思っております。 ご教授をよろしくお願いいたします。
- 締切済み
- PHP
補足
お返事ありがとうございます。 なんとなくですがphpの場合jsonを使用するというのが一般的な傾向が見られたのですが jsonは全く触った事がないのでどう使うものかすらわかりませんでした^^; 詳しく例を教えて頂き大変参考になりました。1つ目のセレクトボックスを選んで2つ目を選びますよね。 ここで2つ目を選択しているじょうたいで1つ目のセレクトボックスの値をデフォルトにすると 2つ目のセレクトボックスが消えなくても値をデフォルトにする事ってできませんでしょうか? 現状ですと両者のセレクトボックスの値を選択し1つ目の値をデフォルトにしても2つ目の値は そのままになってしまいます。 可能であれば方法を教えて頂けますと幸いです。