0

データベースからのデータを含むドロップ リスト ボックスが複数あるので、最初のドロップ リストのセクションに基づいて 2 番目のドロップ リストを選択したい 最初
のテーブルには、これらの 3 つのフィールドが 含まれています。テーブルには、これらの 3 つのフィールド Village_id(主キー)、Village_name、District_id(外部キー) があります。

そのため、ユーザーに最初に地区ボックスを選択してから、ID を持つ選択した地区名に基づいて、2 番目のボックスに、village.district_id = district.district_id を持つすべての村名を表示するようにします。誰でも私を助けることができますか?? 私は他のテーブルから独立して各テーブルを選択していましたが、最初のテーブルに基づいている必要があります

コードのチャンク

function districtQuery(){

$distData = mysql_query("SELECT * FROM districts");

  while($recorddist = mysql_fetch_array($distData)){

     echo'<option value="' . $recorddist['district_name'] .  '">' . $recorddist['district_name'] . '</option>';

  }


}
// function for select by village
function villageQuery(){

//$villageData = mysql_query("SELECT * FROM village");

  $villageData = mysql_query("SELECT village_name FROM village WHERE district_id = ('SELECT district_id FROM districts')") or die (mysql_error());

  while($recordvillage = mysql_fetch_array($villageData)){

     echo'<option value="' . $recordvillage['village_name'] .  '">' . $recordvillage['village_name'] . '</option>';

  }


}

ps ajaxとjqueryの使い方がわからない

4

1 に答える 1

0

あなたのWHERE句にはいくつかの問題があります:

WHERE district_id = ('SELECT district_id FROM districts')

まず、内側の選択から一重引用符を削除します。

WHERE district_id = (SELECT district_id FROM districts)

SELECT district_id FROM districts次に、サブクエリ ( ) が複数の行を返す場合、これは失敗することに注意してください。次のようなものが必要だと思います:

WHERE district_id IN (SELECT district_id from districts)

最後に、クエリは、district_id が定義されているすべての村のリストを取得します。これを行うための推奨される方法は、次のものを使用することですINNER JOIN

SELECT village_name
FROM village
INNER JOIN districts ON village.district_id = districts.district_id

補遺: フィードバックに基づく完全なクエリ。

PHP/Ajax についてはお手伝いできませんが、すべてが適切に接続されていれば、地区 ID が提供されることはわかっています。取得したら、次の基本的なクエリを使用します。

SELECT village_name FROM village WHERE district_id = <your district id value>

幸運を祈るとともに、申し訳ありませんが、Ajax の部分についてはお手伝いできません。

于 2013-03-28T15:05:43.143 に答える