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

时间:2014-05-06 04:18:05

标签: php html html.dropdownlistfor

我不确定如何解释。这让我感到困惑,因为我仍然是这个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>

3 个答案:

答案 0 :(得分:2)

您有3个主要选项:

  1. 一次性“一次性”执行此操作,只需调用一次PHP页面即可呈现页面的HTML,并且不会回发到另一个页面并在浏览器中刷新,或者对第二个下拉列表的任何AJAX调用JSON。相反,您可以将“BOTH”下拉菜单的所有可能值“推送”到浏览器,并使用Javascript实际缩小第二个下拉列表中显示的值列表,具体取决于您在第一个中选择的内容

  2. 用你的php页面进行2次“调用”,第一次使用第一个下拉列表中的所有值呈现页面,第二次使用NO值,然后当你从第一个下拉列表中选择值时, page / form / dropdown会触发一个回发(你的第二次调用)到你的PHP页面,这将在第二个下拉列表中重新填充页面,但是只有适当的(缩小的)选项。

    < / LI>
  3. 通过2次调用完成,但没有RE-RENDERING页面而且没有POSTBACK。相反,您将在服务器上拥有2个PHP页面/脚本。

    1. 第一个脚本使用2个下拉列表呈现HTML页面,并使用其值填充第一个脚本。
    2. 在第一个下拉列表中选择一个选项后,将触发对第二个脚本的AJAX请求。当在PHP服务器上调用该页面/脚本时,它不会呈现和发送HTML,而是仅代表第二个下拉列表的适当(缩小)值的JSON。在浏览器中启动的AJAX调用是通过等待JSON返回的Javascript完成的。如果是,则在第二个下拉列表中处理并“更改值”。
    3. 这可以使用Native Javascript或jQuery完成。但是,使用jQuery会更容易。

答案 1 :(得分:0)

关于此主题,SO上有几篇帖子。请先阅读这些主题,希望这些有用 -

  1. Populate one dropdown list based on the selection of other dropdown list
  2. jQuery show/hide drop-down options based on another drop-down option
  3. 最后,您可以查看此处的教程,根据下拉选择填充下拉列表...

    Tutorial Here | Demo Here

    Credit goes to

答案 2 :(得分:0)

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

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

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