0

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

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

4

2 回答 2

2

在您的循环中使用 isset 验证是否$_POST['title']存在,这意味着复选框已打开:

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");
    }
}
于 2013-10-29T21:54:00.467 回答
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 语句和重复代码块的需要。

于 2013-10-29T22:04:42.950 回答