从特定帖子中获取名称和价值

时间:2013-10-29 21:48:56

标签: php html mysql forms post

我有一个复选框,我想将所有值传递给函数以更新表。

该复选框有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仅获取“开启”的值。不是'关'。我可以全部获取它们,或者只是从值中获取标题,以便在查询中使用它。

2 个答案:

答案 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语句和重复代码块的需要。