2012-01-13 19 views
1

[OK]をクリックすると、Webを正しく検索できないか、検索結果のポイントがわかりませんが、数日間検索して私自身、私はまだ単純で分かりやすい答えがありません!PHPとMySQLを使用した複数の依存選択ボックス

私は選択ボックスでフライト検索フォームを持っています。 セレクトボックスの結果は、MySQLのPHPによって生成されます。

例:

前進飛行:

出発都市 - "ロンドン"

目的地の都市 - ロンドン

exeptすべての都市

フライト日 - フライトのすべてのフライトの日付ロンドン - >目的地 都市

後方飛行:

出発都市 - ロンドンexept再びすべての都市

目的地の都市 - すべての都市が

後方出発をexeptフライト日 - 飛行後方出発のためのすべてのフライトの日付 シティ - >後方行き先都市

私はこのフォームをPHPのみで作成し、GETメソッドを使用して問題はありませんが、もちろん、私はしたいと思いますページの再読み込みを取り除く。明白な解決策 - AJAX。

私のアプローチ:

    選択ボックスに
  1. 使用onChangeイベント属性でJavaScript関数を呼び出すためのGETメソッド
  2. とサーバー(の.phpファイル)へのXMLHttpRequestを送信するJavaScript関数 'this.value'
  3. .phpファイルには、単純な「if($ _GET ['value_sent_with_javascript_function'])」と呼ばれるファンクションが含まれています。div-document.getElementById( "div_id")にjavascript関数を設定すると、phpレスポンスがinnerHTML = xmlhttp.responseText;

これは、2つのフィールド(最初は「親」、2番目の「子」は「親」ボックスの選択値に応じて入力されます)には問題ありません。しかし、私は同じメソッドを使用して3番目のフィールド( "子供"に依存するもの)にしたい場合、それはちょうど仕事ではありません。私はJavaScriptの専門家ではないので、私はこれを理解できません。

私は単純な解決策がありますか?

+0

子供とそのd ependedは関連していますか?あなたはいくつかの出来事を束縛しています –

+0

ええと...あなたは第3レベルで同じアプローチを使用できるはずです。私たちはいくつかのコードを見る必要があるかもしれません。しかし、あなたは[jQuery](http://jquery.com/)をチェックアウトして**これをすべて簡単に**する必要があります。 – webbiedave

+0

問題を診断できるようにコードを投稿してください –

答えて

0

あなたの方法であなたを設定する必要があり、簡単な例:

Main.phpファイル

<script type="text/javascript"> 
    function loadXMLDoc(step) 
    { 
     var showPage; 
     var rrestultBox; 

     if (step==1) 
     { 
      showPage = 'destination.php?select=' + document.getElementById('departure').value; 
      resultBox = 'destinationBox'; 
     } 
     if (step==2) 
     { 
      showPage = 'times.php?select=' + document.getElementById('destination').value; 
      resultBox = 'timesBox'; 
     } 
     var xmlhttp; 
     if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
     } else {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
      xmlhttp.onreadystatechange=function() 
     { 

     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      document.getElementById(resultBox).innerHTML=xmlhttp.responseText; 
     } 
    } 
     xmlhttp.open("GET",showPage,true); 
     xmlhttp.send(); 
    } 
</script> 
<form name="selectBoxes"> 
    <select name="departure" id="departure" onchange="loadXMLDoc(1);"> 
     <option value="sydney">Sydney</option> 
     <option value="canberra">Canberra</option> 
     <option value="Melbourne">Melbourne</option> 
    </select> 
</form> 
<div id="destinationBox"></div> 
<div id="timesBox"></div> 

先。PHP

<form name="selectBoxes"> 
    <select name="destination" id="destination" onchange="loadXMLDoc(2);"> 
     <option value="sydney">Sydney</option> 
     <option value="canberra">Canberra</option> 
     <option value="Melbourne">Melbourne</option> 
    </select> 
</form> 

times.phpファイル

<form name="selectBoxes"> 
<select name="times" id="times""> 
    <option value="">1pm</option> 
    <option value="">2pm</option> 
    <option value="">3pm</option> 
</select> 

はアクションでそれを見る:here

**が更新され、

'destination.php' を追加するのを忘れ
+0

javascriptの「ステップ」アイデアをありがとう! –

関連する問題