0

我正在尝试根据另一个下拉框中的选择填充一个下拉框。这是我的 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>     

当我运行查询时,一切都很好,但我需要获取此结果并使用它来填充另一个下拉框(<'value from previous drop down'>),它位于此处:

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>';
}                                 

有什么想法吗?谢谢吉姆

4

2 回答 2

0

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

在你的第一个SELECT你可能没有得到任何输出或者可能是空白行。

根据网站——

SUBSTRING_INDEX(str,delim,count)

在计数出现分隔符 delim 之前从字符串 str 返回子字符串。如果 count 为正,则返回最终分隔符左侧的所有内容(从左侧开始计数)。如果 count 为负数,则返回最终分隔符右侧(从右侧开始计数)的所有内容。SUBSTRING_INDEX() 在搜索 delim 时执行区分大小写的匹配。

于 2012-06-04T17:07:29.557 回答
0

这就是我使用JavaScriptAjax解决问题的方法:

$("#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 />";

完美运行!

于 2012-06-04T19:46:07.063 回答