【问题标题】:get name and value from specific post从特定帖子中获取名称和值
【发布时间】:2013-10-29 21:48:56
【问题描述】:

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

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

【问题讨论】:

    标签: php html mysql forms post


    【解决方案1】:

    如果$_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");
        }
    }
    

    【讨论】:

    • 感谢您的回复。在我将选项更改为on 后,该表未更新。没有错误
    • $valueToInsert 只返回值,但我们需要在查询中使用当前标题
    • 当前标题是title,因为您在验证时处于循环中if( $valueToInsert )
    • foreach ($row_specifics as $title =&gt; $value) ->>> 标题是关键
    • 感谢您的帮助。我必须检查复选框选项生成器上的另一个错误,这就是它不更新表格的原因。
    【解决方案2】:

    不是主题,但不是完全偏离主题...您可以简化代码,使其更易于管理和阅读。

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

    【讨论】:

    • 谢谢你。我之前在另一个问题上看到过,在我解决更新功能后我正要编辑我的代码
    猜你喜欢
    • 1970-01-01
    • 2013-06-22
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2023-04-05
    • 2021-01-22
    • 1970-01-01
    相关资源
    最近更新 更多