男人这没有任何意义我试图解决这个问题几个小时,并搜遍了整个网站。在DB中,user_level是1,2,3作为我内爆的值。我正在显示复选框,我希望在值与DB中的值匹配时检查它们。当数据库中只有一个值(例如1或2)用于user_level时,这非常有效。现在使用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. ' ';
}
$ selected值应该在正确的复选框上输出“checked”值但不是。
答案 0 :(得分:1)
多个问题:
array(MEMBER ...
不正确。 MEMBER
和VISITOR
之类的内容是未定义的常量(除非您没有显示define()
来自其他地方的foreach ( $field_names as $key => $value ) {
$thePostIdArray = explode(',', $key);
电话。 PHP将礼貌地#34;将它们更正为字符串,但会发出警告。
然后你的foreach()循环接受这个新数组并在其内容上循环:
$key
但此时$foo = explode(',', 'member');
只是一个STRING,例如&#39; MEMBER&#39;或者&#39;访客&#39;。它不是阵列,所以没有任何东西可以爆炸。
0 => 'member'
将生成一个包含in_array
的单个元素数组,所以现在你有了一个数组。而这纯粹是偶然的,会让你的in_array
电话工作。但是这整个序列毫无意义且完全是多余的。
请注意,$arr = array('FOO');
var_dump('foo', $arr);
会进行区分大小写的比较:
FOO != foo
将返回布尔值false,因为在这种情况下为{{1}}。
答案 1 :(得分:0)
<?php
$db = mysql_connect('localhost', 'root', 'password')
or die('Could not connect: ' . mysql_error());
$query = "select user_level from test.my_table";
$result = mysql_query($query,$db);
/*
mysql> select user_level from my_table;
+------------+
| user_level |
+------------+
| 1,2,3 |
| 4 |
| 5,6 |
+------------+
3 rows in set (0.00 sec)
*/
/*
$rows = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$rows[] = $row;
}
print "<pre>".print_r($rows,true)."</pre>";
Array
(
[0] => Array
(
[user_level] => 1,2,3
)
[1] => Array
(
[user_level] => 4
)
[2] => Array
(
[user_level] => 5,6
)
)
*/
$my_checkboxes = array('one','two','three','four','five','six','seven');
$group = 0;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$row_values = explode(',',$row['user_level']);
/*
print "<pre>".print_r($row_values,true)."</pre>";
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Array
(
[0] => 4
)
Array
(
[0] => 5
[1] => 6
)
*/
print "<div style='border:1px solid black;display:inline-block'>";
foreach ($my_checkboxes as $value => $label)
{
$selected = (in_array(($value+1), $row_values)) ? "checked='checked'" : '';
print "<input type='checkbox' name='group$group' value='$value' $selected/>$label<br/>";
}
print "</div><br/><br/>";
$group++;
}
?>
和PHP输出的HTML(查看源代码):
<div style='border:1px solid black;display:inline-block'><input type='checkbox' name='group0' value='0' checked='checked'/>one<br/>
<input type='checkbox' name='group0' value='1' checked='checked'/>two<br/>
<input type='checkbox' name='group0' value='2' checked='checked'/>three<br/>
<input type='checkbox' name='group0' value='3' />four<br/>
<input type='checkbox' name='group0' value='4' />five<br/>
<input type='checkbox' name='group0' value='5' />six<br/>
<input type='checkbox' name='group0' value='6' />seven<br/>
</div><br/><br/>
<div style='border:1px solid black;display:inline-block'><input type='checkbox' name='group1' value='0' />one<br/>
<input type='checkbox' name='group1' value='1' />two<br/>
<input type='checkbox' name='group1' value='2' />three<br/>
<input type='checkbox' name='group1' value='3' checked='checked'/>four<br/>
<input type='checkbox' name='group1' value='4' />five<br/>
<input type='checkbox' name='group1' value='5' />six<br/>
<input type='checkbox' name='group1' value='6' />seven<br/>
</div><br/><br/>
<div style='border:1px solid black;display:inline-block'><input type='checkbox' name='group2' value='0' />one<br/>
<input type='checkbox' name='group2' value='1' />two<br/>
<input type='checkbox' name='group2' value='2' />three<br/>
<input type='checkbox' name='group2' value='3' />four<br/>
<input type='checkbox' name='group2' value='4' checked='checked'/>five<br/>
<input type='checkbox' name='group2' value='5' checked='checked'/>six<br/>
<input type='checkbox' name='group2' value='6' />seven<br/>
</div><br/><br/>