0

我有多个下拉列表框,其中包含来自数据库的数据,所以我想根据第一个的部分选择第二个下拉列表第一个
表有这三个字段 District_id(主键),district_name,Governate_id(外键) 第二个表有这三个字段 村庄_id(主键),村庄名,区ID(外键)

所以我希望用户首先选择地区框,然后根据选择的地区名称具有 id 我希望第二个框显示所有具有村庄.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 回答