我是开发新手。这是我在下面写的一些代码。我有一个包含 3 个选择的动态下拉列表。 第一个选择是国家,然后是省,然后是城市。由于数据的大小,我使用数据库作为值。如果我设置 $coun_val='加拿大' 和 COUNTRY_VAL='加拿大'(数据库值之一(并查看正确的省份,我就可以运行以下代码。但是我想使用 $coun_val=$_REQUEST['Country'] 并在 sql 查询中使用它,但是该值似乎是空的,并且没有填充任何内容。
注意:$_REQUEST['Country'] 用于 if 语句中的第一个选择,以设置所选值并起作用。
<div class="fieldsarea"><select id="select_province" class="searchfields" name="select_province">
<option class="" value="">--Select Province/State--</option>
<?php
$coun_val=$_REQUEST['Country'];
$query1 = "SELECT * FROM dynamicprovs WHERE COUNTRY_VAL=mysqli_real_escape_string($conn,$coun_val);
$result1 = mysqli_query($conn,$query1) or die(mysqli_error($conn));
while ($record = mysqli_fetch_array($result1)) {
$prov_val=$record['PROVINCE_VAL'];
if($_REQUEST['province']==$prov_val){
echo "<option class='" . $coun_val . "'value='" . $prov_val ."'selected='selected'>'". $prov_val ."'</option>";
}else
{
echo "<option class='" . $coun_val . "'value='" . $prov_val ."'>'". $prov_val ."'</option>";
}
}
?>
</select>
</div>
您有三种方法可以实现此目的:
-
每次选择后提交页面。这样,就可以将所选值作为 $_REQUEST 变量传递,并使第二个和第 3 个选择实际工作。
-
获取所有值并将它们存储在 JavaScript 数组中,并从中动态填充第 2 个和第 3 个选择值。
-
为第一个和第三个请求创建 AJAX 处理程序,以便在每个"更改"事件上,它们将向 PHP 后端发送一个请求,以检索第二个和第三个选择的值。
这 3 种方式中的任何一种都有好处(第 1 种是最简单的,第 2 种是浏览器中最快的,第 3 种是最优雅和节省资源的(,因此由您决定选择哪一种。
另外,正如@steven所提到的,您的查询中有一个错误:而不是
$query1 = "SELECT * FROM dynamicprovs WHERE COUNTRY_VAL=mysqli_real_escape_string($conn,$coun_val);
它应该说
$query1 = "SELECT * FROM dynamicprovs WHERE COUNTRY_VAL='". mysqli_real_escape_string($conn,$coun_val) ."'";