0

我想从具有动态字段的多个复选框中更新表。

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

<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>

所以我得到了我想要的。 预习

当我提交表单时,我运行一个函数,该函数从表中获取所有字段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并提交测试更改时,我只获得onURL 查询中的值。

我试图回显$titleand$valueToInsertif检查问题(in POST),但我只得到三个值 [ ABS on / ESP on / Immobilizer on]。

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

4

1 回答 1

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

获得所有预期值后,请注意如何确定和存储每个开关的状态。有关更多信息,请参阅此问题

于 2013-11-04T20:29:31.643 回答