我得到的值是" $ 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). " >";
}
} ?>
答案 0 :(得分:1)
您看到重复的复选框,因为对于从数据库中提取的每一行,您都会循环访问用户发布的extra_field
数据。 $HTTP_POST_VARS['extra_field']
中有两个值,因此每行有两个复选框。
您应该使用($extra_fields['products_extra_fields_id'] == $val)
来测试是否在每种情况下都选中了复选框,而不是in_array
。
$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" : "")
. " >";
}
语句中用引号括起来。
以下内容应解决所有这些问题:
/// <reference path="typings/node/node.d.ts" />
import fs = require('fs');
interface Question {
number: number;
text: string;
}
interface Answers {
ordinal: number;
text: string;
}