从多个复选框更新表

时间:2013-11-04 19:21:07

标签: php mysql forms checkbox

我想使用动态字段从多个复选框更新表格。

我使用以下代码构建了复选框:

<div class="form-horizontal" style="margin-right: 35px; margin-left: 0px;">
<div class="form-group">
<?  $i = 0; 
    foreach ($row_specifics as $title => $value) { ?>
        <label class="control-label col-lg-2"><?= $title ?></label>
        <div class="col-lg-1" style="padding-right: 5px; padding-left: 0px;">
            <div class="make-switch switch-small" data-on="success" data-off="danger">
                <input id="<?= $title ?>" name="<?= $title ?>" type="checkbox" <?= $value=='on' ? 'checked' : ''?> />
            </div>
        </div>
    <? $i++;
        if($i % 4 == 0) { ?> 
    </div>
    <div class="form-group"> 
        <?} 
    }?>
</div>

所以我得到这个,因为我想要它。 Preview

当我提交表单时,我运行一个函数来获取表specifics中的所有字段,并尝试使用表单中的更改来更新表(复选框)

foreach ($row_specifics as $title => $value) {
    $valueToInsert = ( isset($_REQUEST[$title]) ) ? $value : null;

    if( $valueToInsert ) {
        $query = mysql_query("UPDATE `specifics` SET $title = '{$valueToInsert}' WHERE `car_id`= $id");
    }
}
  • 当我将表单更改为POST并且我提​​交测试更改时,没有 发生。
  • 当我将表单更改为GET并提交测试更改时,我只会在网址查询中获得on值。

我试图回复$title内的$valueToInsertif来检查问题(在POST中),但我只得到三个值[ABS on / ESP on / Immobilizer on]

请求:当有人更改复选框选项时,我想要正确更新表格。此表单和复选框位于管理页面的“编辑”面板中,用户可以编辑表中记录的规范。

1 个答案:

答案 0 :(得分:0)

您应该检查所有值是否按预期方式通过。请尝试以下代码来查看所有$ _REQUEST信息:

$_REQUEST['someRequest'] = 'sweet';
$output = 'Requests:<pre>';
ob_start();
var_export($_REQUEST);
$output .= ob_get_contents();
ob_end_clean();
$output .= '</pre>';
print $output;

我建议为所有表单字段添加前缀,以便您可以更轻松地在请求中检测它们。例如:

<input id="<?= 'chickenButter' . $title ?>" name="<?= $title ?>" type="checkbox" />

然后在请求中检查'chickenButter':

$_REQUEST['chickenButterCheerios'] = 'sweet';
foreach($_REQUEST as $key => $value){
    if(stristr($key,'chickenButter')){
        $output .= $value;
    }
}
print $output;//prints sweet

获得所有预期值后,请注意如何确定和存储每个开关的状态。有关详情,请参阅this question