2012-06-04 39 views
0

我想填充一个下拉框,基于从另一个下拉框中的选择。以下是我对PHP代码:填充下拉框,基于另一个下拉框使用php,mqsql和ajax的选择

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

当我运行我的查询,一切都很好,但我需要利用这个结果,并用它来填充另一个下拉框(从<“值以前下拉'>)这里是:

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

有什么想法? 谢谢 Jim

回答

0

这是我如何使用JavaScript的阿贾克斯解决我的问题:

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

完美的作品!

0

可能是您以错误的方式使用SUBSTRING_INDEX函数。

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

按照website -

SUBSTRING_INDEX(STR,DELIM,计数)

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

+0

我从第一个选择完美的结果,但我需要使用查询的结果填充第二个下拉框。 – Jim

相关问题