繁体   English   中英

如何使用第一个选择中的$ _REQUEST来填充下拉SQL查询中的第二个选择

[英]How to use $_REQUEST from first selection to populate second selection in a drop down sql query

我是新手。 这是我在下面编写的一些代码。 我有3个选择的动态下拉列表。 首先选择国家,然后是省,然后是城市。 由于数据量大,我将数据库用于值。 如果设置$ coun_val ='Canada'和COUNTRY_VAL ='Canada'(数据库值之一),并且可以看到正确的省份,则可以运行以下代码。 但是,我想使用$ coun_val = $ _ REQUEST ['Country']并在sql查询中也使用它,但是该值似乎为null,并且没有填充。

注意:$ _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>

您可以通过三种方式实现这一目标:

  1. 每次选择后提交页面。 这样,就有可能将所选值作为$ _REQUEST变量传递,并使第二和第三选择真正起作用。

  2. 抓取所有值并将它们存储在JavaScript数组中,并从中动态填充第二和第三选择值。

  3. 为第一个和第三个请求创建AJAX处理程序,以便在每个“更改”事件上,它们将向PHP后端发送一个请求,以检索第二个和第三个选择的值。

这三种方式中的任何一种都有好处(第一种是最简单的方法,第二种是浏览器中最快的方法,第三种是最优雅且最节省资源的方法),因此由您决定选择哪种方法。

另外,正如@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) ."'";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM