我想使用动态字段从多个复选框更新表格。
我使用以下代码构建了复选框:
<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
并提交测试更改时,我只会在网址查询中获得on
值。我试图回复$title
内的$valueToInsert
和if
来检查问题(在POST
中),但我只得到三个值[ABS on / ESP on / Immobilizer on
]
请求:当有人更改复选框选项时,我想要正确更新表格。此表单和复选框位于管理页面的“编辑”面板中,用户可以编辑表中记录的规范。
答案 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。