我使用PHP对服务器端进行编程并卡住了。
我想使用表单的select标签创建一组输入字段。 select的选项应该从我的数据库中获取,第一个输入中选择的选项将决定第二个输入中的选项。
例如,这两个字段是国家/地区和州。首先,用户选择他们的国家名称,该名称将决定状态输入字段中出现的状态列表。我希望当用户更改国家/地区时,列表会动态更改。
答案 0 :(得分:0)
您可以在 PHP 中每次都提交一个选择。
例如:
<form action="selectState.php" method="post">
<select name="country">
<option value="countryName">countryName</option>
...
</select>
</form>
然后你在selectState.php中获得 $ _ POST ['country'] 的值并按你想要的方式打印选择:
<form action="" method="post">
<select name="state">
<?php
// select use $_POST['country'] to customize the select option's
?>
</select>
</form>
更加用户友好的解决方案(不需要新页面或刷新)使用 AJAX 。
所以你可以使用这种形式:
<form action="selectState.php" method="post">
<select name="country" onchange="ajaxFunction(this.value)">
<option value="countryName">countryName</option>
...
</select>
<select name="state" id="stateList">
<!-- here we'll put the states we want -->
</select>
</form>
每次用户更改选择值时都会调用ajaxFunction()并将函数传递给函数。
这是ajaxFunction(注意:这个例子使用jQuery,但你可以在vanilla javascript中完成):
function ajaxFunction(val){
$.ajax({
type: 'post', // choose the method
url: 'page.php', // choose the 'action' page
data: {
country:val // send the data
},
success: function (response) {
// this tell the browser what to do with the response of 'page.php'
// in this case we are telling to put everything we get to the HTML element with stateList id
document.getElementById("stateList").innerHTML=response;
}
});
}
最后你需要它的'page.php'来简单地查询数据库(注意:这是伪代码):
<?php
// Query the DB for the states with country = $_POST['country']
while(results){
echo '<option value="results[$i]">results[$i]</option>';
}
?>
答案 1 :(得分:-1)
您使用的是诸如Laravel(推荐)或Codeigniter之类的php框架(不确定它是否仍在开发中)。
如果是这样,你可以构建一个国家的2d php数组,每个国家都有一个状态的子数组。
这可以直接放到渲染页面(视图)中。 使用像
这样的东西 var countries_list =<?php echo json_encode($countries_array); ?>;
将直接将此注入到javascript数组中,您可以使用该数组在国家/地区选择更改时填充状态选择。
或者使用ajax但速度会慢一点,并且会更多地点击服务器。