php我的sql下拉动态变化

时间:2017-01-11 05:58:20

标签: php mysql

我有两个下拉列表。有一个静态值,第二个从db获取值。我希望如果从第1个下拉列表中选择值,则在第2个下拉列表中加载相关值。我试过了。但是它根据用户加载来自数据库的所有数据。例如,当用户从具有值查询的请求类型下拉列表中选择时,然后第二次下拉加载仅具有catType Inquiry的值。如果他选择了投诉,则必须显示投诉数据我已经尝试了但是所有的数据都被加载了,或者只有一个数据正在加载。在这方面,我的身体对我有所帮助。谢谢你。 这是我的代码

 <div class="col-md-4">
  <div class="form-group">
<label for="requesttype"><?php echo $requestField; ?></label>
 <select class="form-control" required="" id="requesttype" name="requesttype" onchange="fcrActionChange(this);">                      
 <option value="">Select Request Type</option>
 <option value="Inquiry">Inquiry</option>
<option value="Complaint">Complaint</option>
<option value="Service Request/FCR">Service Request/FCR</option>
<option value="Verification Call">Verification Call</option>
 </select>
<span class="help-block"><?php echo $requestHelp; ?></span>
  </div>
   </div>


<script type="text/javascript">


$("#requesttype").change(function() {
 $("#catId).load("navigation.php?requesttype=" + $("#requesttype").val());
   });
    </script>

     <div class="col-md-4">
    <div class="form-group">
  <label for="catId"><?php echo $categoryField; ?></label>
  <select class="form-control" name="catId" id="catId">
  $tcat = "SELECT catId, catName FROM categories WHERE userId = ".$userId." AND isActive = 1 AND catType = ".$_GET['requesttype'];
 $rest = mysqli_query($mysqli, $tcat) or die('-2'.mysqli_error());
 while ($tcatrow = mysqli_fetch_assoc($rest)) { 
   echo "<option value="$tcatrow['catId'] >";
   echo     clean($tcatrow['catName'])."</option>";
 }
 </select>
 <span class="help-block"><?php echo $categoryHelp; ?></span>
 </div>
 </div>
 </div>

2 个答案:

答案 0 :(得分:0)

您的代码无法工作的原因是因为PHP是服务器端的。您的所有PHP代码都是执行,即页面加载时。这就是为什么你不能简单地使用PHP动态加载东西而不重新加载页面的原因。您最好的选择是使用像Javascript这样的客户端语言,可能与PHP结合使用。

你可以这样做的一种方式:

  1. 创建一个文件getter.php,使数据库正常工作,通过GET接收输入(选择第一个下拉列表)并将数据作为option标记返回
  2. <?php
        $tcat = "SELECT catId, catName FROM categories WHERE userId = ".$userId." AND isActive = 1 AND catType = ".$_GET['request_type];
        $rest = mysqli_query($mysqli, $tcat) or die('-2'.mysqli_error());
        while ($tcatrow = mysqli_fetch_assoc($rest)) { 
          echo "<option value=\"$tcatrow['catId'] >";
          echo     clean($tcatrow['catName'])."</option>";
        }
    1. 如果你正在使用jQuery(你可能应该这样做),你可以使用load()函数用适当的参数调用你的getter.php

      
      //Assuming you give the first select id="request-type"and the second id="cat-id"
      $("#request-type").change(function() {
      $("#cat-id).load("getter.php?request_type=" + $("#request-type").val());
       });

    2. 有关详细信息,请参阅this tutorial(它实际上解释了实现目标的三种不同方式)。

答案 1 :(得分:0)