我有一个复选框,我想将所有值传递给函数以更新表。
该复选框有60个选项,我使用mysql的foreach()生成它们。
// html表单
<div class="form-group">
<? $i = 0;
foreach ($row_specifics as $title => $value) {
if ($value =='on') { ?>
<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="specs_value" name="<?= $title ?>" type="checkbox" value="on" checked/>
</div>
</div>
<? } else { ?>
<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="specs_value" name="<?= $title ?>" type="checkbox" value="off"/>
</div>
</div>
<?} $i++;
if($i % 4 == 0) { ?>
</div>
<div class="form-group">
<?} }?>
//功能
foreach ($row_specifics as $title => $value) {
$value = $_REQUEST[$title];
$query = mysql_query("UPDATE `specifics` SET $title = '$value' WHERE `car_id`= $id");
}
问题:如何从$_POST
获取标题和值并在函数和更新查询中使用它?
$_POST
仅获取“开启”的值。不是'关'。我可以全部获取它们,或者只是从值中获取标题,以便在查询中使用它。
答案 0 :(得分:2)
在你的循环中,如果$_POST['title']
存在,则使用isset进行验证,这表示复选框已打开:
foreach ($row_specifics as $title => $value) {
$valueToInsert = ( isset($_POST[$title]) ) ? $value : null;
if( $valueToInsert ) {
$query = mysql_query("UPDATE `specifics` SET $title = '{$valueToInsert}' WHERE `car_id`= $id");
}
}
答案 1 :(得分: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="specs_value" name="<?= $title ?>" type="checkbox" value="<?= $value?>"<?= $value=='on' ? 'checked' : ''?>/>
</div>
</div>
<? endforeach ?>
这将消除对if语句和重复代码块的需要。