我有一个问题,我有3个下拉菜单,并且所有这些都已连接,我正在创建一个系统,可以根据用户的设备和城市自动显示城市的邮政编码。
例如,用户选择省A,然后这是我的问题,我将如何做到这样当用户选择省A时,系统会显示省A内的所有城市?我已经有一个完整的国家邮政编码数据库,选择城市后,邮政编码将自动显示在一个不应编辑但不能禁用的文本框中,禁用文本框会忽略它的内容,我记得,
这是我对该省的查询,
$query = 'SELECT DISTINCT major_area FROM zipcodes GROUP BY major_area ORDER BY major_area asc ';
$result = mysql_query($query) or die(mysql_error());
echo "<select name='categories' required>";
echo "<option value =''>Select Province</option>";
while ($row = mysql_fetch_array($result)){
$major_area = $row['major_area'];
echo "<option value='$major_area'>$major_area</option>";
}
echo "</select>";
这是我对城市下拉的查询,major_area显示了一个带有条目'ABRA'的例子
$query = "SELECT DISTINCT city FROM zipcodes WHERE major_area='ABRA' ORDER BY city asc";
$result = mysql_query($query) or die(mysql_error());
echo "<select name='categories' required>";
echo "<option value =''>Select City</option>";
while ($row = mysql_fetch_array($result)){
$city = $row['city'];
echo "<option value='$city'>$city</option>";
}
echo "</select>";
当然还有邮政编码。我尚未完成它,但我知道如何查询它。我只需要让它自动但我不知道如何。
所有帮助将不胜感激,谢谢你提前。
答案 0 :(得分:1)
Here您可以找到一个非常容易理解的教程,了解如何执行此操作。
首先,这不是严格的PHP可以做的事情。您需要刷新页面才能填充其他下拉列表。从这里,我们得出结论,你必须使用Ajax。或者JQuery .ajax()
就此而言。无论你觉得使用起来感觉更舒服。
以下是步骤:
当第一个下拉列表被选中时,你将有一个onClick
事件,它将加载一个JS函数
JS函数将对包含第二个下拉列表代码的php文件进行AJAX调用。当然,您必须将省ID传递给JS函数并转发到php文件。
在PHP文件中,您将根据您发送给他的ID,从DB中选择具有正确信息的选择,您猜对了。对WHERE
条款有用,对吧?
最后一个PHP函数显示下拉列表,然后你去了:)
希望这有帮助!阅读我提供的文档,它将帮助您并牢记:如果您只是要求SO上的人员为您提供现成的代码,您将无法学到任何东西。您可以做的最好的事情是阅读文档,以便下次遇到此问题时,您将知道如何自行解决,而不是回到SO搜索答案或发布重复的答案;)
答案 1 :(得分:0)
因为您可能不想预先加载所有城市数据(因为它可能是相当多的数据),您可能希望某些jS执行AJAX调用以填充城市下拉列表中的选择省。假设您使用jQ,例如:
function getCityOptions(province) {
$.getJSON('/getcityjson', { 'province':province })
.done(function(data) {
// Update City select with new options here
}
}
$('#province_select).change(function() {
getCityOptions($('#province_select').val());
});
不是一个完整的例子,但应该让你开始。