我有一個多場這樣的:多重選擇字段 - 選擇=「選擇」多次
<select name="excluded_groups[]">
<?php echo $foo->multi_group_select_options($group_ids, $excluded_id); ?>
</select>
我管理通過此功能可以從數據庫中獲取結果,並把它們放在<select>
,但我無法管理選定的選定值。
第一個參數應該將selected="selected"
添加到提交之前標記的字段中,然後提交,第二個參數可以防止顯示group_id(第二個參數按原樣工作)。
下面是函數...
/**
* group_options
* Get group names in the dropdown list
*/
public function multi_group_select_options($default = false, $exclude_id = '')
{
global $user;
$exclude_id = (isset($this->config['default_group'])) ? $this->config['default_group'] : 5;
$sql_where = ($user->data['user_type'] == USER_FOUNDER) ? '' : 'WHERE group_founder_manage = 0';
$sql_where_and = (!empty($sql_where)) ? ", AND group_id <> $exclude_id" : "WHERE group_id <> $exclude_id";
$sql = 'SELECT group_id, group_name, group_type
FROM ' . GROUPS_TABLE . "
$sql_where
$sql_where_and
ORDER BY group_name";
$result = mysql_query($sql);
$s_group_options = '';
while ($row = mysql_fetch_assoc($result))
{
/*if (is_array($default))
{
break;
$group_id = '';
foreach ($default as $key => $group_id)
{
$group_id = $group_id;
}
}
print_r($default);*/
$selected = ($row['group_id'] == $group_id) ? ' selected="selected"' : '';
$s_group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
$s_group_options .= '<option' . (($row['group_type'] == GROUP_SPECIAL) ? ' class="sep"' : '') . ' value="' . $row['group_id'] . '"' . $selected . '>' . $s_group_name . '</option>';
}
$db->sql_freeresult($result);
return $s_group_options;
}
我把作爲第一個參數數組是完全有效的。它只是一個帶有鍵和值的正常數組,其中的值是組ID。
嘗試在while中使用foreach - 沒有工作,與while循環外部相同。
的$默認的陣列是這樣的:
Array
(
[0] => 1
[1] => 7
[2] => 2
[3] => 3
)
你沒有設置'$ group_id'。試試'$ selected =(is_array($ default)&& in_array($ row ['group_id'],$ default))? 'selected =「選擇」':'';'而是。 – DCoder
您的解決方案奏效!謝謝。你能否發表你的評論作爲答案,以便我可以接受它? – Aborted