这是毫无意义的人我试图找出这个了几个小时,并搜索遍布此网站。在数据库中,user_level为1,2,3,作为I imploded的值。我正在显示复选框,我希望在数值与数据库中的值匹配时检查它们。当数据库中只有一个值(如user_level的1或2)时,它可以很好地工作。现在用1,2,3,我简单地分解了值,然后使用in_array()来产生结果,如果是这样,添加复选框。出于某种原因,这不起作用,随机框似乎被检查。下面是代码:通过爆炸值检查复选框
$sql = "SELECT user_level FROM table";
$result = query_db($sql);
$row = mysql_fetch_array($result);
$field_names = array(MEMBER => 'Member',
VISITOR => 'Visitor');
foreach ($field_names as $key => $value)
{
$thePostIdArray = explode(',', $key);
//print_r($thePostIdArray); // testing output
$selected = (in_array($row['user_level'], $thePostIdArray)) ? 'checked="checked"' : '';
$options .= '<input type="checkbox" name="'.$perm_type.'[]" '.$selected.' value="'.$key.'"> '.$value. ' ';
}
的$选择的值应该输出的“选中”在正确的复选框值,但事实并非如此。
您应该转储'$ row'在foreach之前,以确保它包含了你在找什么。而'$ field_names'的值似乎没有意义......实际上,从不在'$ row'之上,因为它实际上并没有在任何地方使用。是整段代码还是你编辑了一些东西?另外..如果你应该使用'$ row'并且有好几行......你需要为每一行执行while($ row = mysql_fetch_array($ result)){....}'回到......(你应该使用msqli_或pdo bc它更安全,大声笑...我现在不再更新它,对不起!) –
$行显示数据库中的user_level值。当user_level中只有1位数字时,此功能完美无缺。只有当这些逗号被添加时,这是拧紧。我认为in_array()不能以某种方式工作。 –
您可以发布$ row中返回的内容的示例吗?在'$ fieldnames'中有'MEMBER'和'VISITOR'常量吗?如果不是,那究竟发生了什么?我不知道你想做什么......有多少个复选框?二? –