2011-01-18 6 views
0

以前はあまり使用していませんでしたが、これは簡単です。私はパズルに別々の部分を持っていますが、一緒に置く方法はわかりません。最初の選択に基づいて2番目の動的ドロップダウンを設定するAjaxのアプローチ

両方ドロップダウン最初は、次のコードを使用して移入され、データベースから移入され:

<?php 
$sql = "SELECT title, nid FROM node where type= 'hotel'"; 
$hotels = mysql_query($sql); 
?> 
<select name="hotels" id="hotels"> 
<?php 
while($row = mysql_fetch_array($hotels)) 
{ 
    echo "<option value=\"".$row['nid']."\">".$row['title']."\n "; 
} 
?> 
</select> 

2番目のドロップダウンは、上記選択された値に基づいて移入されるべきです。だから、基本的には、選択した項目のIDを取得し、その項目をクエリで使用して2番目のドロップダウンを設定します。

私はSQLクエリのために、以下のではなく、上記のコードを使用します。Xは、最初のドロップダウン上のselectedIndexのIDです

SELECT title, nid from node where type = 'season' AND hotel_nid = X 

コードは機能することはありますが、私はどのように2つを組み合わせるか分かりません。 Javascriptを使用して、 "seasons"というdivのInnerHTMLを変更し、ドロップダウンを取得して表示するコードを印刷することができます。

しかし、両方のドロップダウンを表示することができますが、最初の表示が完了するまで2番目の表示は無効になっています。

+0

こんにちは、私は今jQueryをセットアップし、それが簡単なスクリプトで私のページで動作しているテストしています。私が必要とするものを得るためにjQueryで最も簡単な方法は何ですか?私は調査するのにもっと時間がかかりますが、これはクライアントが予想よりも早いためです。ありがとう! –

答えて

1

ユーザが最初のドロップダウンの値を変更したときに、2番目のリストをポピュレートするPHPスクリプトをAjax経由で呼び出す必要があります。したがって、onchange = "myFunctionToPopulate(this.value);"を追加する必要があります。最初のドロップダウンに移動します。

これを行う方法がわからない場合は、jQueryなどのJSライブラリも使用することをお勧めします。これを実現するための簡単なコードを投稿します。 jQueryを使って

編集

は、あなたがこのような何かを行うことができます。your_script.phpは全体のselectタグを返します

<select name="first_dropdown" onchange="$('#dropdown2_container').load('your_script.php?nid='+this.value);"> 
    <option.... 
</select> 
... 
<div id="dropdown2_container" style="display:none"> </div> 

+0

私はonChange()を設定することについて知っているが、私が対処した問題は、innerHTMLを2番目のドロップダウンを表示するように設定しようとしているときで、JavascriptでinnerHTMLを設定するとjs変数の途中で私はエスケープ文字などを試しました –

+0

こんにちは、私は今jQueryをセットアップして、それは簡単なスクリプトで私のページで動作しているテスト。私が必要とするものを得るためにjQueryで最も簡単な方法は何ですか?私は調査するのにもっと時間がかかりますが、これはクライアントが予想よりも早いためです。ありがとう! –

+0

あなたの例を使ってスクリプトを作成しようとしました。しかし、私は完全な選択タグを返すのに問題があります。実際には単純な文字列でも何かを返すのに問題があります。スクリプトは文字通りこのように見えますか?<?php return "hello world"; ?> –

1

あなたの代わりに<div>のご<select>ボックスのinnerHTMLを埋める使用することができますが、私は本当にjQueryのを見て持っているあなたに助言する:http://api.jquery.com/category/ajax/を。それはすべてをより簡単にします。

関連する問題