php selected,php-多个选择字段-多次使用selected =“ selected”

我有一个像这样的多个领域:

<?php echo $foo->multi_group_select_options($group_ids, $excluded_id); ?>

我设法通过此函数从数据库中获取结果并将其放在< select>中,但是我无法设法保持选定的值处于选中状态.

第一个参数应将“ selected =“ selected”添加到提交之前标记的字段中,然后再提交,第二个参数阻止显示group_id(第2个参数应能正常工作).

这是功能…

/**

* 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 .= '' . $s_group_name . '';

}

$db->sql_freeresult($result);

return $s_group_options;

}

我作为第一个参数放入的数组是完全有效的.它只是具有键和值的普通数组,其中值是组ID.

在while内尝试使用foreach-无效,与while循环外相同.

$default数组如下所示:

Array

(

[0] => 1

[1] => 7

[2] => 2

[3] => 3

)

解决方法:

您没有设置$group_id.以下代码将使用默认值数组和单个值:

if(is_array($default)) {

$selected = in_array($row['group_id'], $default);

} else {

$selected = !strcasecmp($row['group_id'], $default);

}

$selected = $selected ? ' selected="selected"' : '';

除此之外,请查看@Barmar在his answer中编写的注释,并使用htmlspecialchars转义任何动态文本,例如$s_group_name.

此评论与您的​​特定问题无关,但是您仍然应该考虑它.

标签:select,default,arrays,php

来源: https://codeday.me/bug/20191031/1979063.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值