如何将数据从下拉列表检索到另一个下拉列表


How to retrieve data from dropdown list to another dropdown list?

我不知道该怎么解释。这让我很困惑,因为我仍然是php世界的新手。希望你们能帮助我。

我有一个表单。在这个表单中有两个下拉列表。第一个下拉列表将显示已保存在数据库中的所有位置。问题是,我如何根据第一个下拉列表中选择的位置在第二个下拉列表中显示id号。

有人能帮我吗?

代码:

  <form action="form.php" method="post" name="order">
<table>
 <tr>
    <td>Select Location :</td>
    <td> <select name="location" id="location">
    <option>-- Location --</option>
    <?php

$query="SELECT DISTINCT  location FROM inventory";
        $result=mysql_query($query);
            while(list($locationid)=mysql_fetch_row($result)) {
            echo "<option value='"".$location."'">".$location."</option>";
    }
   ?>
    </select>
      </td>
    </tr>
    <tr>
    <td>Date :</td>
    <td><input type="text" nama="date" /></td>
     </tr>
  <td>Id Number:</td>
    <?php
   $query="SELECT DISTINCT  idno FROM asset WHERE locationid='inventory.location'";
    $result=mysql_query($query);
    while(list($idno)=mysql_fetch_row($result)) {
        echo "<option value='"".$idno."'">".$idno."</option>";
    }
   ?>
       </td>
</tr>
<tr><td>
<input type="button" value="submit" name="submit" /> </td></tr>
</table>

你有三个主要的选择:

  1. 做它"一次"与一个调用你的PHP页面渲染页面的HTML和没有回发到另一个页面和刷新在浏览器中,也没有任何AJAX调用JSON的第二个下拉列表。相反,你可以将两个下拉框的所有可能值"推"给浏览器,并使用Javascript根据你在第一个

  2. 中选择的内容缩小第二个下拉框中显示值的列表。
  3. 用2个"调用"来做你的php页面,第一次在第一个下拉菜单中呈现页面的所有值,在第二个下拉菜单中没有值,然后当你从第一个下拉菜单中选择值时,你的页面/表单/下拉菜单会触发回发(你的第二次调用)到你的php页面,这将重新渲染页面与第二个下拉菜单也填充,但只有适当的(缩小)选项。

  4. 用2个调用来做,但是没有重新渲染页面,没有POSTBACK。相反,您将在服务器上有2个PHP页面/脚本。

      第一个脚本用2个下拉框渲染HTML页面,并用它的值填充第一个下拉框。
  5. 在第一个下拉菜单中选择一个选项后,将触发对第二个脚本的AJAX请求。当在PHP服务器上调用该页面/脚本时,它不会呈现和发送HTML,而是只呈现和发送代表第二个下拉框的适当(缩小)值的JSON。在浏览器中发起的AJAX调用是通过等待JSON返回的Javascript完成的。当它这样做,然后你处理它,并在第二个下拉菜单中"改变值"。

这可以用原生Javascript或jQuery完成。但是,使用jQuery会简单得多。

SO上有几个关于这个话题的帖子。请先阅读这些主题,希望能有所帮助-

  1. 根据其他下拉列表的选择填充一个下拉列表
  2. jQuery显示/隐藏下拉选项基于另一个下拉选项

最后,你可以在这里查看教程,根据下拉选择填充下拉菜单…

Tutorial Here |演示

功劳归

我在这里发布的另一个答案:

(请根据您的要求尝试更改内容)

    <span class="location_lable">Please select state from Dropdown: </span>
     <?php 
     $row =  $wpdb->get_results("SELECT distinct(state_id), state_name from wp_state_city ", ARRAY_N);
     echo "<select name='states' id='states'><option value=''>Select State</option>";
     foreach($row as $results)
     {
     echo $fetchData = '<option value="'.$results[0].'">'.$results[1].'</option>';
     }
     echo "</select>";
      ?>
    <span class="location_lable">Please select city from Dropdown: </span>
    <select name="city" id="city"><option value=" ">Select city</option></select>  
    <script>
      $("#states").change(function() {
       $("#city").html(' ');
       state_v = $(this).val();
       param = "get_city_front"; 
         $.ajax({
            url: "locationtrack.php",
            type: 'POST',
            dataType: 'json',
            data: {'state_v': state_v, 'param': param},
            dataType: 'json',
            cache: false,
            success: function(data){
                 $("#city").append(jqxhr.responseText);// need to show success
            },
            error: function(jqxhr) {
                $("#city").append(jqxhr.responseText); 
            }
         }); 
     });
</script>

locationtrack.php

添加查询并在一个变量中返回结果。

<?php
   $query="SELECT DISTINCT  idno FROM asset WHERE locationid='inventory.location'";
   $result=mysql_query($query);
    while(list($idno)=mysql_fetch_row($result)) {
        $res .=  "<option value='"".$idno."'">".$idno."</option>";
    }
   echo $res;
 ?>