foreach重复复选框字段

时间:2015-06-23 12:55:24

标签: php mysql

我得到的值是" $ 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). " >";
    }
    } ?>

enter image description here

1 个答案:

答案 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;
}