2012-06-04 64 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

相關問題