2015-05-29 177 views
0

我想根據用戶在第一個框中選擇的值來填充第二個下拉框。這是我迄今所做的:如何填充第一個下拉框中的第二個下拉框(硬)

在PHP文件:

function displayDropDown() 
{ 
    $table_tester = "TBL_TESTER_LIST"; 
    $query_string = "select * from $table_tester"; 
    $result = @mysql_query($query_string) or die (mysql_error()); 

    echo "<select id=\"tester_type\" onChange=\"getTesterType();\">"; 
    while($data = mysql_fetch_array($result)) 
    { 
     $tester_type = $data['tester_type']; 
     echo "<option value='$tester_type'>$tester_type</option>"; // first drop down 
    } 
    echo "</select>"; 
} 

function displaySecondDropDown($selected_tester_type) 
{ 
    $table_tester = "TBL_TESTER_LIST"; 
    $query_string = "select * from $table_tester where tester_type = '$selected_tester_type'"; 
    $result = @mysql_query($query_string) or die (mysql_error()); 

    echo "<select>"; 
    while($data = mysql_fetch_array($result)) 
    { 
     $tester_name = $data['tester_name']; 
     echo "<option value='$tester_name'>$tester_name</option>";// second drop down 
    } 
    echo "</select>"; 
} 

?> 
<?php 

$action = rtrim($_REQUEST['action']); 

if($action=="insert") 
{ 
    $tester_type = rtrim($_REQUEST['tester_type']); 
    $tester_name = rtrim($_REQUEST['tester_name']); 

    echo checkDuplicateTesterName($tester_type, $tester_name); 
} 
else if($action=="displayDropDown") 
{ 
    $selected_tester_type = $_REQUEST['tester_type']; 

    echo displayDropDown(); 
    echo displaySecondDropDown($selected_tester_type); 
} 

?> 

在外部JavaScript文件:

function displayDropDown() 
{ 
    var page = "database.php"; 

    $.post(page, { 
     action : "displayDropDown" 
    }, function(data) { 
     $("div#drop_two_list").html(data); 
    }); 
} 

function getTesterType() 
{ 
    var tester_type = $("#tester_type").val(); 
    var page = "database.php"; 

    $.post(page, { 
     tester_type : tester_type 
     }, function(data) { 
     $("div#drop_two_list").html(data); 
    }); 
} 

在HTML文件中:

<html> 
    <head> 
     <title>Delete Tester</title> 
     <link rel="stylesheet" type="text/css" href="style.css"/> 
     <script language="javascript" type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript" src="function.js"></script> 
     <script type="text/javascript">displayDropDown();</script> 
    </head> 

    <body> 
     <h3>Delete Tester</h3> 
     <div id="drop_two_list"></div> 
     <table class="deleteTable"> 
      <tr> 
       <td/><td><br> 
        <input type="button" value="Cancel" onclick="window.close();"/> 
        <input type="button" name="send" value="Delete" onclick="deleteTester();"/> 
       </td> 
      </tr> 
    </table> 
    </body> 
</html> 

出現兩個下拉框。第一個有價值(我將在後面的部分中解釋這是錯誤的),第二個是空的。此外,出現錯誤:Notice: Undefined index: tester_type in /opt/lampp/htdocs/Signup/module1/database.php on line 86這是PHP文件中的$selected_tester_type = $_REQUEST['tester_type'];。如果我要在第一個中選擇一個值,那麼另一個錯誤將替換頁面上的所有內容:Notice: Undefined index: action in /opt/lampp/htdocs/Signup/module1/database.php on line 75$action = rtrim($_REQUEST['action']);

現在,我說明爲什麼第一個下拉框有錯誤值的部分。在繼續之前,爲了更好地理解我的問題,下面是我試圖用下拉框填充的表(TBL_TESTER_LIST)。 注意:我只按隨機順序顯示5個樣本行,因爲我在此表中有超過500行,並且不想將所有內容都放在此處。

id  tester_type tester_name 
1   LMX   LMX-01 
2   LMX   LMX-04 
26  LCX   LCX-06 
40  CAT   CAT-14 
95  HPPS   HPPS-01 

的tester_type列是我想填充我的第一個下拉框中什麼,tester_name列是我想填充我的第二個下拉框中,相應的內容。正如你所看到的那樣,tester_type是重複的,因爲一個tester_name可以屬於同一個tester_type(一個例子是綠色蘋果no.1(tester_name)是蘋果(tester_type),綠色蘋果no.2(tester_name)也是蘋果(tester_type))。

我目前在我的第一個下拉框中輸入的內容是:LMX,LMX,LMX,LMX等等。那是因爲我的第31行是LMX。我該如何編寫我的下降第一個下拉框,以便它只顯示每種類型之一,而我的第二個下拉框將顯示基於用戶選擇的值?

一個示例是:如果用戶在第一個下拉框中選擇LMX,則所有屬於LMX tester_type的tester_name將填充第二個下拉框。

如果桌面上需要更多信息,請告訴我。一直在尋找解決方案5天,我似乎並沒有接近結論。

+0

在這兩個JS函數中,您都需要傳遞'action'和'tester_type'。 對於'displayDropDown'函數,'action'的值爲「displayDropDown」,'tester_type'爲「」。 在第二個函數中。把'action'放在值「displayDropDown」中。 希望它有幫助。 –

+0

嗯,這可能是其中一個錯誤,但我仍然遇到同樣的問題。 – hzq

回答

0

不問爲什麼你的表是以這種方式構造的,是否不足以在查詢中使用DISTINCT子句來消除重複項。

select DISTINCT tester_type from $table_tester 
相關問題