php - php my sql中下拉菜单的动态变化

标签 php mysql

我有两个下拉菜单。一个有静态值,第二个从数据库获取值。我希望如果从第一个下拉列表中选择值,则在第二个下拉列表中加载相关值。我努力了。但它根据用户从数据库加载所有数据。例如,当用户从具有值查询的请求类型下拉列表中选择时。然后第二个下拉列表仅加载具有 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>

最佳答案

您的代码无法运行的原因是 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>";
    }
  • 如果您使用 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 (它实际上解释了实现目标的三种不同方法)。

    关于php - php my sql中下拉菜单的动态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41583687/

    相关文章:

    php - 使用 PHP 将 .pdf 文件作为 BLOB 保存到 MySQL 时出错

    php - 如何将两个 MySQL 行合并为一个并使用 PHP 在表中显示它们?

    java - 插入现有行/选择非空字段

    php - 操作数应包含 1 列 - 通过复制同一个表中的行

    javascript - 使用 SimpleModal 和 jQuery 的 Ajax WordPress 帖子弹出窗口

    mysql - 解决带有列名的 mysql linux bash 有 "-"& 从文件查询 mysql

    mysql - 选择具有特定值的行之后的行

    mysql 命令行帮助 (windows)

    java - 使用 Solr 搜索索引作为数据库 - 这是 "wrong"吗?

    javascript - 验证数字和特殊字符 '_'