【问题标题】:Dynamic change of drop down in php my sqlphp my sql中下拉的动态变化
【发布时间】:2017-01-11 21:39:12
【问题描述】:

我有两个下拉菜单。一个有静态值,第二个从数据库中获取值。我想如果从第一个下拉列表中选择值,然后在第二个下拉列表中加载相关值。我努力了。但是它根据用户从数据库中加载所有数据。例如,当用户从请求类型下拉列表中选择具有值查询时。然后第二个下拉仅加载具有 catType 查询的值。如果他选择投诉,则必须显示投诉数据.我已经尝试过,但所有数据都已加载,或者只有一个数据正在加载。任何机构在这方面帮助我。提前致谢。 这是我的代码

 <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>

【问题讨论】:

  • 这类问题你用ajax解决
  • @MASIDDIQUI 你能举个例子吗?
  • 似乎有教程展示了多种方式

标签: php mysql


【解决方案1】:

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

您可以这样做的一种方法:

  1. 创建一个文件,getter.php,它负责数据库工作,通过 GET 接收输入(选择第一个下拉菜单)并以 option 标签的形式返回数据
<?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());
     });

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

【讨论】:

  • 因为我希望当第一个下拉值发生变化时,第二个应该根据第一个下拉选择从 db 获取值。第一个下拉具有静态值
  • 你在使用 jQuery 吗?
  • @m.usman 你在 navigation.php 里放了什么?而且你还没有指出你是否正确地包含了 jQuery。
  • 另外,当您更新问题中的代码时,请勿替换原始代码。写“EDITED:​​>”然后添加你更新的代码
  • 导航是同一个页面名称。我在同一个页面上写这个。选择请求类型时如何调用它
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2013-11-14
    • 2014-01-04
    • 2023-04-10
    相关资源
    最近更新 更多