2012-05-09 74 views
1

我有一個相當簡單的問題。我有一個選擇下拉列表,其值爲1到10.這是一個編輯屏幕,用戶已經選擇了一個應該選擇的值。我給他們改變它的機會。所以我需要做的是在選項值中插入選中的單詞。爲了完成這個簡單的任務,我一直在做一堆不雅的事情。有沒有最佳做法或簡單的方法來做到這一點。如果這樣做,並且創建10個新變量,似乎沒有必要開銷。請注意,爲保持html邏輯與php邏輯分離,我不想將選項值順序寫出,我將html放在單獨的區域中,只需在相應的位置設置所選的變量即可。php mysql最佳實踐顯示在下拉列表中選中

if ($row['points']==1){ 
$select1 = "selected"} 
if ($row['points']==2){ 
$select2 = "selected"} 
//values 3 through 9 
if ($row['points']==2){ 
$select2 = "selected"} 


echo '<select name="points">'; 
echo '<option value = 1'. $select1.'>1</option>'; 
echo '<option value=2'. $select1.'>2</option>'; 
//values 3 through 9 
echo '<option value=10'.$select10.'>10</option>'; 
echo '</select>'; 

回答

1

(沒有多重選擇的允許),即所以一次只能選擇一個..尋找http://fi.php.net/str_replace

echo str_replace("value='".$selected_value."'", "value='".$selected_value."' selected", "<option value='1'>1</option><option value='2'>2</option> ...."); 
+0

這對於名=字符串處理的優勢。如果名稱是數字,上面的循環方法也很好。 – user1260310

3
for ($x = 1; $x <= 10; $x++) { 
    echo "<option value=$x" . ($row['points'] == $x ? ' selected' : '') 
     . ">$x</option>'; 
} 
2

for循環好這一點,有一個內嵌的if else語句,因爲使用的是單可選擇列表測試選定的情況下

echo '<select name="points">'; 
for ($i=1; $i<=10; $i++) { 
    echo "<option value='{$i}'".($row['points']==$i ? ' select="selected"':'').">{$i}</option>"; 

} 
echo '</select>'; 
1

我這樣做與jQuery和隱藏的領域該數據用於確定<select>的選定值。

HTML:

<input type=hidden name=points value=1> 
<select name="points"> 
    <option value=1>1</option> 
    <option value=2>2</option> 
</select> 

JS:

$('input[type=hidden]').each(function(){ 
      var e = $(this); 
      var name = e.attr("name"); 
      var val = e.val(); 
      if(name!="") 
      { 
       e.parent().find('select[name='+name+']').val(val);    
      }  
     }); 

example