使用MySQL,PHP将变量从一个下拉列表传递到另一个下拉列表
我很难将变量从一个下拉字段传递到另一个下拉字段。
这是我的第一个下拉菜单。在查询数据库以显示可用状态时,确实可以正确显示。
<tr>
<td>State</td>
<td><select name="state" id="state"><option value=''>Select</option>
<?php
$sql = "SELECT * from states";
$result = mysqli_query($db,$sql);
if (mysqli_num_rows($result) > 0 ) {
while($row = mysqli_fetch_object($result)) {
echo "<option value='" . $row->state . "'>" . $row->state ."</option>";
}
}
?></select></td>
</tr>
基于第一个下拉列表中的选择,我想在第二个下拉列表中填充所选州的城市。我不知道如何将状态变量传递给第二个查询。
第二个下拉列表:
<tr>
<td>City</td>
<td><select name="city" id="city"><option value=''>Select</option>
<?php
$sql = "SELECT * from cities";
$result = mysqli_query($db,$sql);
if (mysqli_num_rows($result) > 0 ) {
while($row = mysqli_fetch_object($result)) {
echo "<option value='" . $row->city . "'>" . $row->city ."</option>";
}
}
?></select></td>
</tr>
答案 0 :(得分:0)
您不能在没有页面加载的情况下将值从HTML传递到PHP并运行PHP。尝试使用jquery library(survey)
data(api)
xtabs(~sch.wide+stype, data=apipop)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
tbl <- svytable(~sch.wide+stype, dclus1)
tbl[] <- paste0(round(tbl, 2), " (", round(prop.table(tbl)*100, 2), "%)")
tbl
stype
sch.wide E H M
No 406.16 (6.56%) 101.54 (1.64%) 270.78 (4.37%)
Yes 4467.8 (72.13%) 372.32 (6.01%) 575.4 (9.29%)
获取选定州的城市值,并使用jquery $.get()
更改城市下拉列表<select>
答案 1 :(得分:0)
谢谢Chee,这帮助我使用jQuery向另一个方向发展。这就是我最终要做的事情:
<tr>
<td>City</td>
<td><select name="city" id="city"><option value=''>Select</option>
<script>
$('#state').on('change', function(){
var city = $(this).val();
if(city){
$.ajax({
type:'POST',
url:'ajaxData.php',
data:'city='+city,
success:function(html){
$('#state').html(html);
}
});
}else{
$('#city').html('<option value="">Select state first</option>');
}
});
</script></select></td>
</tr>
这是我的ajaxData.php文件:
$sql = "SELECT * FROM $cities WHERE ".$_POST['city'].";
$result = mysqli_query($db,$sql);
if (mysqli_num_rows($result) > 0){
echo '<option value="">Select City</option>';
while($row = mysqli_fetch_object($result)){
echo "<option value='" . $row->city. "'>" . $row->city. "</option>";
}
}