php - 使用动态字段名称将数据保存在mysql中

标签 php mysql

我有 mysql 表存储公司 ID、一周中各天的营业/营业时间和状态(已营业/已营业)。制作带有字段和更新功能的表单。看起来像这样。有效,但我相信它可以优化。你能建议一下如何做吗?

表格:

            <form role="form" method="post" action="" autocomplete="off">
                <div class="box-body">
                    <div class="row">
                        <div class="col-sm-3 text-bold"><div class="padd bg-gray-light">Day</div></div>
                        <div class="col-sm-3 text-bold"><div class="padd bg-gray-light">Status</div></div>
                        <div class="col-sm-3 text-bold"><div class="padd bg-gray-light">Opening</div></div>
                        <div class="col-sm-3 text-bold"><div class="padd bg-gray-light">Closing</div></div>
                    </div>
                    <?php while ($h = dbarray($get_hours)) { ?>
                    <input type="text" name="day" value="<?php echo $h['day_day']; ?>">
                    <?php
                    // FORM VALUES
                    if ($h['day_status'] == 1) {
                        $status_o = "checked";
                        $status_c = "";
                    }
                    if ($h['day_status'] == 0) {
                        $status_o = "";
                        $status_c = "checked";
                    }
                    ?>
                    <div class="row">
                        <div class="col-sm-3">
                            <h4><?php echo $l['day_'.$h[day_day]]; ?></h4>
                        </div>
                        <div class="col-sm-3">
                            <div class="input-group">
                                <div class="checkbox">
                                    <label><input type="radio" name="status_<?php echo $h['day_day']; ?>" value="1" <?php echo $status_o; ?>> Dirbame</label>
                                    <label><input type="radio" name="status_<?php echo $h['day_day']; ?>" value="0" <?php echo $status_c; ?>> Uždaryta</label>
                                </div>
                            </div>
                        </div>
                        <div class="col-sm-3">
                            <div class="form-group">
                                <input type="text" name="open_<?php echo $h['day_day']; ?>" class="form-control <?php if ($h['day_status'] == 0) { echo "bg-gray"; } ?>" value="<?php echo $h['day_open']; ?>">
                            </div>
                        </div>
                        <div class="col-sm-3">
                            <div class="form-group">
                                <input type="text" name="close_<?php echo $h['day_day']; ?>" class="form-control <?php if ($h['day_status'] == 0) { echo "bg-gray"; } ?>" value="<?php echo $h['day_close']; ?>">
                            </div>
                        </div>
                    </div>
                    <hr style="margin: 3px 0;">
                    <?php } ?>
                </div>

                <div class="box-footer">
                    <button type="submit" name="save" class="btn btn-success pull-right">Save</button>
                </div>
            </form>

更新 PHP:

<?php
if (isset($_POST['save'])) {
    // VALUES
    $mon_status = stripinput(descript($_POST['status_1'])); $mon_open = stripinput(descript($_POST['open_1'])); $mon_close = stripinput(descript($_POST['close_1']));
    $tue_status = stripinput(descript($_POST['status_2'])); $tue_open = stripinput(descript($_POST['open_2'])); $tue_close = stripinput(descript($_POST['close_2']));
    $wed_status = stripinput(descript($_POST['status_3'])); $wed_open = stripinput(descript($_POST['open_3'])); $wed_close = stripinput(descript($_POST['close_3']));
    $thu_status = stripinput(descript($_POST['status_4'])); $thu_open = stripinput(descript($_POST['open_4'])); $thu_close = stripinput(descript($_POST['close_4']));
    $fri_status = stripinput(descript($_POST['status_5'])); $fri_open = stripinput(descript($_POST['open_5'])); $fri_close = stripinput(descript($_POST['close_5']));
    $sat_status = stripinput(descript($_POST['status_6'])); $sat_open = stripinput(descript($_POST['open_6'])); $sat_close = stripinput(descript($_POST['close_6']));
    $sun_status = stripinput(descript($_POST['status_7'])); $sun_open = stripinput(descript($_POST['open_7'])); $sun_close = stripinput(descript($_POST['close_7']));
    // UPDATE
    $result1 = dbquery("UPDATE a_days SET day_status='".$mon_status."', day_open='".$mon_open."', day_close='".$mon_close."' WHERE day_day=1");
    $result2 = dbquery("UPDATE a_days SET day_status='".$tue_status."', day_open='".$tue_open."', day_close='".$tue_close."' WHERE day_day=2");
    $result3 = dbquery("UPDATE a_days SET day_status='".$wed_status."', day_open='".$wed_open."', day_close='".$wed_close."' WHERE day_day=3");
    $result4 = dbquery("UPDATE a_days SET day_status='".$thu_status."', day_open='".$thu_open."', day_close='".$thu_close."' WHERE day_day=4");
    $result5 = dbquery("UPDATE a_days SET day_status='".$fri_status."', day_open='".$fri_open."', day_close='".$fri_close."' WHERE day_day=5");
    $result6 = dbquery("UPDATE a_days SET day_status='".$sat_status."', day_open='".$sat_open."', day_close='".$sat_close."' WHERE day_day=6");
    $result7 = dbquery("UPDATE a_days SET day_status='".$sun_status."', day_open='".$sun_open."', day_close='".$sun_close."' WHERE day_day=7");
}
?>

最佳答案

循环字段名称的数字后缀。

$results = array();
foreach (range(1, 7) AS $daynum) {
    $status = stripinput(descript($_POST['status_' . $daynum]));
    $open = stripinput(descript($_POST['open_' . $daynum]));
    $close = stripinput(descript($_POST['close_' . $daynum]));
    $results[$daynum] = dbquery("UPDATE a_days SET day_status='".$status."', day_open='".$open."', day_close='".$close."' WHERE day_day='.$daynum);
}

关于php - 使用动态字段名称将数据保存在mysql中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38836947/

相关文章:

php - MYSQL 使用多个函数时自动提交

php - 无法使用简单的 Web 应用程序进行部署/前进

php - 如何使用?包含 "LIMIT ?"的 SQL 语句的占位符?

php - 将 php session 变量序列化为 json 格式

php - 使用户能够收藏帖子

php - 重音 "e"即使在元标记之后也显示为问号

php - 如何使用 mysql 和 php 将一对多关系转换为平面数组

在我的 Windows 10 shell 中找不到 PHP 命令,在 git bash 中也找不到。我从这里尝试了所有可用的解决方案

MySQL - 有可能加快 MySQL 的计数吗?

mysql - Magento 触发查询