作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我得到“$val”的值1和4。 products_extra_fields_id 1 和 4 已选中复选框字段,并且其他 products_extra_fields_id 中的另一个复选框已选中。我有两个复选框。如何避免重复的复选框字段。
<?php
$extra_fields_query = mysql_query("SELECT * FROM products_extra_fields");
while ($extra_fields = mysql_fetch_array($extra_fields_query)){
foreach ($HTTP_POST_VARS['extra_field'] as $key=>$val){
//$val get values 1 and 4
echo "<input type='checkbox' name='extra_field[".$extra_fields['products_extra_fields_id']."]' value='".$extra_fields['products_extra_fields_id']."' " . (($extra_fields['products_extra_fields_id'] == $val) ? checked : false). " >";
}
} ?>
最佳答案
您会看到重复的复选框,因为对于从数据库中提取的每一行,您都会循环访问用户发布的 extra_field
数据。 $HTTP_POST_VARS['extra_field']
中有两个值,因此每行有两个复选框。
您应该使用 in_array
来测试每种情况下是否选中该复选框,而不是 ($extra_fields['products_extra_fields_id'] == $val)
。
$HTTP_POST_VARS
非常古老,并在 2001 年的 PHP 4.1 中被弃用。相反,您应该使用 $_POST
这是一个超全局变量。这意味着在函数中使用global
之前,您不必使用它。
checked
是一个字符串,应在 echo
语句中用引号引起来。
以下内容应该可以解决所有这些问题:
$extra_fields_query = mysql_query("SELECT * FROM products_extra_fields");
while ($extra_fields = mysql_fetch_array($extra_fields_query)) {
echo "<input type='checkbox' name='extra_field["
. $extra_fields['products_extra_fields_id'] . "]' value='"
. $extra_fields['products_extra_fields_id'] . "' "
. (in_array($extra_fields['products_extra_fields_id'], $_POST['extra_field'])
? "checked" : "")
. " >";
}
关于php - foreach 重复的复选框字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31003406/
我是一名优秀的程序员,十分优秀!