我不知道该怎么解释。这让我很困惑,因为我仍然是php世界的新手。希望你们能帮助我。
我有一个表单。在这个表单中有两个下拉列表。第一个下拉列表将显示已保存在数据库中的所有位置。问题是,我如何根据第一个下拉列表中选择的位置在第二个下拉列表中显示id号。
有人能帮我吗?
代码: <form action="form.php" method="post" name="order">
<table>
<tr>
<td>Select Location :</td>
<td> <select name="location" id="location">
<option>-- Location --</option>
<?php
$query="SELECT DISTINCT location FROM inventory";
$result=mysql_query($query);
while(list($locationid)=mysql_fetch_row($result)) {
echo "<option value="".$location."">".$location."</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Date :</td>
<td><input type="text" nama="date" /></td>
</tr>
<td>Id Number:</td>
<?php
$query="SELECT DISTINCT idno FROM asset WHERE locationid='inventory.location'";
$result=mysql_query($query);
while(list($idno)=mysql_fetch_row($result)) {
echo "<option value="".$idno."">".$idno."</option>";
}
?>
</td>
</tr>
<tr><td>
<input type="button" value="submit" name="submit" /> </td></tr>
</table>
你有三个主要的选择:
-
做它"一次"与一个调用你的PHP页面渲染页面的HTML和没有回发到另一个页面和刷新在浏览器中,也没有任何AJAX调用JSON的第二个下拉列表。相反,你可以将两个下拉框的所有可能值"推"给浏览器,并使用Javascript根据你在第一个
中选择的内容缩小第二个下拉框中显示值的列表。 用2个"调用"来做你的php页面,第一次在第一个下拉菜单中呈现页面的所有值,在第二个下拉菜单中没有值,然后当你从第一个下拉菜单中选择值时,你的页面/表单/下拉菜单会触发回发(你的第二次调用)到你的php页面,这将重新渲染页面与第二个下拉菜单也填充,但只有适当的(缩小)选项。
用2个调用来做,但是没有重新渲染页面,没有POSTBACK。相反,您将在服务器上有2个PHP页面/脚本。
- 第一个脚本用2个下拉框渲染HTML页面,并用它的值填充第一个下拉框。
- 在第一个下拉菜单中选择一个选项后,将触发对第二个脚本的AJAX请求。当在PHP服务器上调用该页面/脚本时,它不会呈现和发送HTML,而是只呈现和发送代表第二个下拉框的适当(缩小)值的JSON。在浏览器中发起的AJAX调用是通过等待JSON返回的Javascript完成的。当它这样做,然后你处理它,并在第二个下拉菜单中"改变值"。
这可以用原生Javascript或jQuery完成。但是,使用jQuery会简单得多。
SO
上有几个关于这个话题的帖子。请先阅读这些主题,希望能有所帮助-
- 根据其他下拉列表的选择填充一个下拉列表
- jQuery显示/隐藏下拉选项基于另一个下拉选项
最后,你可以在这里查看教程,根据下拉选择填充下拉菜单…
Tutorial Here |演示
功劳归
我在这里发布的另一个答案:
(请根据您的要求尝试更改内容)
<span class="location_lable">Please select state from Dropdown: </span>
<?php
$row = $wpdb->get_results("SELECT distinct(state_id), state_name from wp_state_city ", ARRAY_N);
echo "<select name='states' id='states'><option value=''>Select State</option>";
foreach($row as $results)
{
echo $fetchData = '<option value="'.$results[0].'">'.$results[1].'</option>';
}
echo "</select>";
?>
<span class="location_lable">Please select city from Dropdown: </span>
<select name="city" id="city"><option value=" ">Select city</option></select>
<script>
$("#states").change(function() {
$("#city").html(' ');
state_v = $(this).val();
param = "get_city_front";
$.ajax({
url: "locationtrack.php",
type: 'POST',
dataType: 'json',
data: {'state_v': state_v, 'param': param},
dataType: 'json',
cache: false,
success: function(data){
$("#city").append(jqxhr.responseText);// need to show success
},
error: function(jqxhr) {
$("#city").append(jqxhr.responseText);
}
});
});
</script>
locationtrack.php
添加查询并在一个变量中返回结果。
<?php
$query="SELECT DISTINCT idno FROM asset WHERE locationid='inventory.location'";
$result=mysql_query($query);
while(list($idno)=mysql_fetch_row($result)) {
$res .= "<option value="".$idno."">".$idno."</option>";
}
echo $res;
?>