2012-06-21 59 views
0

我有一個員工數據庫和一個下拉列表,我用PHP生成,然後用javascript,我試圖把正確的類型的血液的每個員工在數據庫中。根據從數據庫加載的數據(PHP)更改組合框中的selectedIndex

我有一個員工數據庫和我用PHP生成的下拉列表,然後用javascript我嘗試爲每個員工在數據庫中輸入正確的血型。

首先,我檢索到的數據:

$rsEmployee = employee::getEmployees(); 
     while($row = mysql_fetch_assoc($rsEmployee)) 
     { 
    echo " 
    <select id='slcBloodType' name='slcBloodType' onload='chooseItem(this, '$row['slcBloodType']')'> 
    <option value='A+'> A+ </option> 
    <option value='A-'> A- </option> 
    <option value='B+'> B+ </option> 
    <option value='B-'> B- </option> 
    <option value='AB+'> AB+ </option> 
    <option value='AB-'> AB- </option> 
    <option value='O+'> O+ </option> 
    <option value='O-'> O- </option> 
    </select>"; 
} 

JavaScript函數:

function elegirOption(list, value){ 
       array = ["A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"]; 

       index = -1; 
       for(var i = 0; i < array.length; i++){ 
        if(value == array[i]){ 
         index = i; 
         break; 
        } 
       } 
       if(index != -1){ 
           this.selectedIndex = index; 
          } 
      } 

但不工作,我似乎無法通過一個PHP變量作爲參數傳遞給一個javascript功能...

還有其他下拉列表,我想這樣做。

+0

你是對的,你不能直接訪問JavaScript中的PHP變量。 PHP是服務器端,JavaScript是客戶端。 – Bono

+0

在您的代碼中添加一些提醒。無論如何,你應該清楚這一點:''chooseItem(this,'$ row ['slcBloodType']')'' – Sebas

回答

1

爲什麼不去做這樣的:

$blood_types = array("A+", "A-", ...); 
echo '<select>'; 

while(....) { 

    foreach($blood_types as $blood_type) { 
    echo '<option'; 
    if($blood_type == $row['slcBloodType']) 
     echo 'selected="selected"'; 
    echo '>'.$blood_type.'</option>'; 
    } 
} 

您不必指定屬性的值,因爲它是相同的文字。

0

但不工作,我似乎無法通過一個PHP變量作爲參數傳遞給JavaScript函數...

這是因爲你不能直接傳遞一個PHP變量到JavaScript。

的選項有:

  1. 設置cookies在PHP它的JavaScript可以在以後讀
  2. 讓PHP呼應JavaScript代碼和插圖中有PHP變量打印出來。例如:

    < SCRIPT LANGUAGE = 「JavaScript的」 類型= 「文/ JavaScript的」>

    VAR水平= 「?< PHP的echo $水平>?」;

    </SCRIPT>

1

首先,你必須與你的代碼的幾個問題,如重複的ID這是壞的。基爾是我怎麼會做吧,這是你的代碼的大規模清理,但應該很接近你有什麼:

在你的頁面的開頭

它總是更好地加載數據存儲在內存中,然後在後面的輸出中重複使用它。不,除非你有一百萬行,內存不應該成爲一個問題...

<?php 
//Read my data i need to work with 
$rsEmployee = employee::getEmployee(); 
$employees = array(); 
while($row = mysql_fetch_assoc($rsEmployee)){ 
    $employees[] = $row; 
} 

網頁標題

再往下,現在,在這一點上,我們將創建初始化代碼...您需要jQuery來進行這項工作。這是一個非常好的瀏覽器不可知的方式來工作,並節省您的麻煩。

?><script> 
    $(function(){ <?php 
     foreach($employees as $employee){ ?> 
     $('#slcBloodType<?php echo $employee['id']; ?>').val('<?php echo $employee['slcBloodType']; ?>'); 
     <?php } ?> 
    }); 
</script><?php 

再往下,在你的頁面

奧萊特的HTML部分,在這一點上,現在你的HTML輸出,並確保您的ID是唯一的:

<?php foreach($employees as $employee){ ?> 
<select id="slcBloodType<?php echo $employee['id']; ?>" name="slcBloodType[<?php echo $employee['id']; ?>]"> 
    <option value='A+'> A+ </option> 
    <option value='A-'> A- </option> 
    <option value='B+'> B+ </option> 
    <option value='B-'> B- </option> 
    <option value='AB+'> AB+ </option> 
    <option value='AB-'> AB- </option> 
    <option value='O+'> O+ </option> 
    <option value='O-'> O- </option> 
</select> 
<?php } ?> 

好運應用這種更好的編碼技術,如果你現在就開始編碼,它將爲你節省更多的麻煩!

相關問題