2015-04-23 83 views
2

我有兩個下拉列表,這些值是從MySQL填充的。第二個下拉值取決於第一個下拉選項。如何使用JavaScript在下拉菜單中顯示選項名稱

無論如何,代碼正在工作。現在使用我的代碼,我將hospital_id發佈到另一個php。但是我想在下拉菜單中顯示hospital_name作爲文本,但截至目前,我只能顯示hospital_id。

下面請看看我的代碼,並建議我一個解決方案:

$query = "SELECT bp_id,bp_name FROM mfb_billing"; 
    $result = $db->query($query); 

    while($row = $result->fetch_assoc()){ 
    $categories[] = array("bp_id" => $row['bp_id'], "val" => $row['bp_name']); 
    } 

    $query = "SELECT bp_id, hospital_id, hospital_name FROM mfb_hospital"; 
    $result = $db->query($query); 

    while($row = $result->fetch_assoc()){ 
    $subcats[$row['bp_id']][] = array("bp_id" => $row['bp_id'], "val" => $row['hospital_id']); 
    } 

    $jsonCats = json_encode($categories); 
    $jsonSubCats = json_encode($subcats); 

這是腳本:

<script type='text/javascript'> 
     <?php 
     echo "var categories = $jsonCats; \n"; 
     echo "var subcats = $jsonSubCats; \n"; 
     ?> 
     function loadCategories(){ 
     var select = document.getElementById("categoriesSelect"); 
     select.onchange = updateSubCats; 
     for(var i = 1; i < categories.length; i++){ 
      select.options[i] = new Option(categories[i].val,categories[i].bp_id);   
     } 
     } 
     function updateSubCats(){ 
     var catSelect = this; 
     var catid = this.value; 
     var subcatSelect = document.getElementById("subcatsSelect"); 
     subcatSelect.options.length = 0; //delete all options if any present 
     for(var i = 0; i < subcats[catid].length; i++){ 
      subcatSelect.options[i] = new Option(subcats[catid][i].val,subcats[catid][i].hosp); 
     } 
     } 
    </script> 

這是我的形式:

<body onload='loadCategories()'> 
    <form id="reportvalue" action="testpj2.php" method="post"> 

    <select id='categoriesSelect'> 
     <option value="1">Select Billing Provider</option> 
    </select> 

    <select name='hospitalname[]' id='subcatsSelect' multiple='multiple'> 
     <option value="all">Select Billing Provider</option> 
    </select> 
<label for="from">From</label> 
<input type="text" id="from" name="from"> 
<label for="to">to</label> 
<input type="text" id="to" name="to"> 
<?php 
//$a = $_REQUEST['hospitalname[]']; 
//echo $a; 
?> 
    <input type="submit" name="Submit" value="Submit"> 
    </form> 
+0

你可以用兩種或兩種以上的方式來完成,將下拉列表的名稱設置爲一個隱藏的輸入,然後在POST中輸入值,或者通過在php –

回答

1

HTML

<select id="someId"></select> 

的Javascript

document.getElementById('someId').innerHTML=" 
<option value='value1'>"+option1+"</option> 
<option value='value2'>"+option2+"</option> 
<option value='value3'>"+option3+"</option>"; 

更新:

從SQL查詢動態數據,

嘗試把這些代碼查詢執行後。用尊重的動態值替換$ row ['value']和$ row ['option']]。

echo"<script type='text/javascript'> var str = '' </script>"; 
while($row = $result->fetch_assoc()) 
{ 
    echo"<script type='text/javascript'> 
    str = str + '<option value='+".$row['value']."+'>'+".$row['option']."+'</option> 
    </script>"; 
} 
echo"<script type='text/javascript'> 
    document.getElementById('someId').innerHTML = str 
    </script>"; 
+0

中生成的數組中的ID來獲取名稱。我不認爲這是是wh在我想...實際上值和選項名稱是從MySQL動態生成的。你能舉一個類似我的代碼的例子嗎? – PeeJay

+0

好的,等一下 –

+0

好的。請花點時間。 – PeeJay

0

如果你正在醫院ID則是很容易的從MySQL

$query = "SELECT hospital_id, hospital_name FROM mfb_hospital where hospital_id = '$_post['hospital_id']'"; 
    $result = $db->query($query); 
$res = mysql_fetch_array($result) 

得到它通過在你選擇的選項值碼將這個代碼

<option value="your ids here will populate" <?php if($hospital_array['hospital_id']==$res['hospital_id']) echo "selected=selected" ?>>Your hospital name will display here which you selected</option> 
來填充選擇的值
相關問題