2012-02-16 50 views
0

我有一個工作的編輯記錄的頁面,但我有一個小問題與被顯示爲選擇下拉從數據庫中引用的相關值列表列出領域。PHP和HTML表單選擇列表

我在下拉列表中,但用戶數據庫中的某些字段可以輸入一個值不在值列表,預計正常行爲上。不過,我在網上顯示此問題時遇到問題。下面是其中的一個字段代碼:

<select name="category"> 
<?php 
foreach($categories as $category) { 
    $selected = ""; 
    if($category == $record->getField('category')){ 
      $selected = " selected"; 
    } 
    $category = htmlspecialchars($category); 
    ?> 
    <option value="<?php echo $category; ?>"<?php echo $selected; ?>><?php echo   $category; ?></option> 
<?php 
} 
?> 
</select> 

這種運作良好,當字段中的值相匹配的來自值列表的選項之一。但是,如果該字段爲空或不匹配,則會出現問題。如果該字段爲空,我會自動顯示第一個值列表選項 - 我可以通過添加一個空白選項來繞過該選項,這很好。

如果字段中的值不匹配的值列表中的選項沒有出現任何 - 我也可以將所有的值列表項之前顯示在頂部的值,但如果該值是一樣的一個值列表項會出現兩次:一次在頂部,然後在列表中的正常位置,這也是不理想的。我想它,如果值是值列表的成員則選擇了它在這上面的代碼實現了什麼列表正常位置。

任何上漲之前,這一幕並有任何指針?

謝謝你,史蒂夫

回答

1

你是怎麼通過 「場」 的意思是,你的意思是$record->getField('category')?如果你想要的是已經包含在SELECT列表中值,即使它不是$category數組中的一個條目,那麼這樣做:

<select name="category"> 

    <?php 

     $output = ""; 
     $selected = false; 

     foreach ($categories as $category) { 

      $output .= "<option value=\"$category\""; 

      if ($category == $record->getField('category')) { 
       $selected = true; 
       $output .= " selected"; 
      } 

      $output += ">$category</option>"; 
     } 

     if (!$selected) { 
      $chosen = $record->getField("category"); 
      $output = "<option value=\"$chosen\" selected>$chosen</option>" . $output; 
     } 

     echo $output; 

    ?> 

</select> 
+0

感謝您的答覆 - 是在$值record-> getField('category')變量可能/可能不存在於$ categories數組中。我試過你的代碼,它沒有錯誤,但我只得到這個輸出:你能看到PHP代碼中的任何語法錯誤或其他我可能錯過的東西? – user982124 2012-02-16 15:11:39

+0

我「米不知道是否使用了‘+ =’操作符是在這裏正確的? – user982124 2012-02-16 15:45:43

+0

是的,你是對的,應該是'='。使用Javascript,道歉混合起來。 – caleb 2012-02-16 18:43:11