填充下拉框,基于使用php,mysql和ajax选择另一个下拉框

时间:2012-06-04 17:00:18

标签: php javascript mysql ajax

我正在尝试根据另一个下拉框中的选项填充下拉框。这是我的PHP代码:

<form id="inventory" method="POST" action="">
   <fieldset>
      <label for="area" >Select Shelf Area</label>
      <select id="area" name="area">
          <option value=""></option>

          <?php $area = $conn->query("
             select substring_index(location, ' ', 1) as area
             FROM location GROUP BY substring_index(location, ' ', 1)");

             while ($row = $area->fetch_assoc()) {
                echo '<option value="' . $row['area'] . '" >' . $row['area'] . '</option>';
             }
          >
      </select><br/>
    </fieldset>
</form>     

当我运行我的查询时,一切都很好,但是我需要获取结果并使用它来填充另一个下拉框(前​​一个下拉列表中的&lt;'值'&gt;),其中: / p>

echo "<label for='location' id='label'>Select location:</label>";
echo "<select id='location' name='location'>";
echo "<option value=''>--Select Location--</option>";
$query = "SELECT location_id, location FROM location
    WHERE location LIKE '<value from previous drop down box>'
    ORDER BY location";
$result = $conn->query($query);
while ($row = $result->fetch_assoc()) {
    echo '<option value="' . $row['location'] . '" >' . $row['location'] . '</option>';
}                                 

有什么想法? 谢谢 吉姆

2 个答案:

答案 0 :(得分:0)

您可能以错误的方式使用SUBSTRING_INDEX功能。

在您的第一个SELECT中,您可能无法获得任何输出或可能是空行。

根据website -

  

<强> SUBSTRING_INDEX(STR,DELIM,计数)

     

在计数出现之前,从字符串str返回子字符串   分隔符delim。如果计数是正数,那么一切都在左边   返回最终分隔符(从左边开始计数)。如果算数是   否定,最终分隔符右侧的所有内容(计数   从右边)返回。 SUBSTRING_INDEX()执行一个   搜索delim时区分大小写匹配。

答案 1 :(得分:0)

这是我使用 JavaScript Ajax 解决我的问题的方法:

$("#area").change (function(){
    $("#acctRecords tbody tr").remove();
    $('#label').show();
    $('#label2').show();
    $('#location').show();
    $('#section').show();

    $.ajax({
        type: "POST",
        async: true,
        url: "area.php",
        dataType:"json",
        data: ({area: $('#area').val()}),
        success: function(data) {
            $('select#location').empty();
            $('select#location').append('<option value="0">Select Option</option>');

            //Populate options of the second dropdown
            for(var x = 0; x < data.id.length; x++) {
                $('select#location').append('<option value="'+data.id[x]+'">'+data.location[x]+'</option>');
            } //end of each function

        } // end of success
    }); // end of ajax call
}); // end of area change function

这发布到我的HTML:

echo"<label for='location' id='label'>Select location:</label>";
echo"<select id='location' name='location'>";
echo"</select><br />";

完美无缺!