2012-01-13 52 views
0

我正在爲一個站點創建一個管理菜單,我有幾個下拉列表需要爲每個不同的字段創建,每個記錄的默認選定選項不同(這與phpBB中的權限管理面板非常相似)。換句話說,我有一個表列出了用戶可能屬於的所有組,並且每行都有用於更改該組權限的選擇菜單。我目前正在使用的功能爲每個不同的套餐的,看起來像這樣:在PHP中使用默認從MySQL中選擇的缺省值創建選擇菜單db

function rfiPermissions($x){ 
$query = "SELECT rfi_permission FROM groups WHERE id = '$x'"; 
$result = mysql_query($query) or die(); 
$row = mysql_fetch_array($result); 
$perm = $row[0]; 
$option = array(); 
$option[0] = "<option value='0'>None</option>"; 
$option[1] = "<option value='1'>Basic</option>"; 
$option[2] = "<option value='2'>Supplemental</option>"; 
$option[3] = "<option value='3'>Full</option>"; 
switch($perm){ 
    case 0: 
     echo $option[0].$option[1].$option[2].$option[3]; 
     break; 
    case 1: 
     echo $option[1].$option[0].$option[2].$option[3]; 
     break; 
    case 2: 
     echo $option[2].$option[1].$option[0].$option[3]; 
     break; 
    default: 
     echo $option[3].$option[1].$option[0].$option[2]; 
     break; 
} 
} 

我一直在努力,因爲我需要在實現這個很多倍找出這樣做的更加流線型的方式我網站,但我一直無法這樣做。有沒有更好的方法做到這一點,我可以簡單地傳遞一個數組的選項需要到一個函數,然後從數據庫回聲一個值,從數組中刪除它,然後迴應其餘的選項?

回答

1

用php設置選定的屬性比改變順序更容易。此外,作爲一個用戶,我喜歡一致性,如果我查看下拉菜單,並且每次看到它時都會更改順序,我會感到沮喪。

$option[0] = "<option value='0' ".($perm==0 ? " selected " : "") .">None</option>"; 
$option[1] = "<option value='1' ".($perm==1 ? " selected " : "") .">Basic</option>"; 
$option[2] = "<option value='2' ".($perm==2 ? " selected " : "") .">Supplemental</option>"; 
$option[3] = "<option value='3' ".($perm==3 ? " selected " : "") .">Full</option>"; 

這在if short hand完成,可以可讀性

+0

謝謝擴大!工作很棒! – Ethan 2012-01-13 20:04:40