【问题标题】:Updating multiple fields更新多个字段
【发布时间】:2016-08-04 09:03:45
【问题描述】:

我在管理面板上有多个字段,用户可以在添加字段时添加字段并删除字段如果我删除 1 个字段并对其进行更新,则它不起作用,它会删除 2 个或更多然后 2 个字段,并且当我尝试更新它时,它没有很好地更新更新问题是由于我会在查询中犯一些错误。但主要是关于我无法正确构建它的逻辑需要帮助。

更新查询

$video_link = $_POST['video_link'];
$old_links  = count($video_link);
if(isset($_POST['video_id'])) {
    $video_id   = $_POST['video_id'];
    $total_id   = count($video_id); 
} else {
    $video_id   = '';
}
$video_links = mysqli_query($connect, "SELECT * FROM video_slides WHERE model_id = '$model_id'");
$total_links = mysqli_num_rows($video_links);

$video_link = sizeof($video_link) - 1;
if($total_links >= 1) {
    for($i = 0; $i<=$video_link; $i++) {
        if(empty($video_id[$i])) {
            mysqli_query($connect, "INSERT INTO `video_slides`(`embeded_link``, `model_id`) VALUES ('$video_link[$i]', '$model_id')");
        }
        $query2 = mysqli_query($connect, "UPDATE `video_slides` SET `embeded_link`='$video_link[$i]' WHERE id='$video_id[$i]'");
        if($video_link < $total_links) {
            $new_total = $total_links-sizeof($video_link);
            for($j = 0; $j<=$new_total; $j++) {
                mysqli_query($connect, "DELETE FROM video_slides WHERE id='$video_id[$j]'");
            }
        }
    }
        } else {
            for($i = 0; $i<=$video_link; $i++) {
                if(empty($video_id[$i])) {
                    mysqli_query($connect, "INSERT INTO `video_slides`(`embeded_link``, `model_id`) VALUES ('$video_link[$i]', '$model_id')");
                }
            }
        }

这是我的表单域

<div class="form-group">
    <label>Video Slides <input type="button" class="add_field_button btn blue" value="Add Field" /></label>
    <div class="input_fields_wrap">
    <?php 
        $sql3 = mysqli_query($connection, "SELECT * FROM video_slides WHERE model_id = '".$data['id']."'");
        if(mysqli_num_rows($sql3) == 0) {
    ?>
    <div class="new">
        <input type="text" id="video_link" size="20" name="video_link[]" placeholder="Embeded Video Link" class="form-control" />
    </div>
    <?php 
        } else {
            while($video = mysqli_fetch_assoc($sql3)) {
    ?>
    <div class="new">
        <input type="text" id="video_link" size="20" name="video_link[]" placeholder="Embeded Video Link" class="form-control" value="<?php echo $video['embeded_link']; ?>" />
        <input type="hidden" value="<?php echo $video['id']; ?>" name="video_id[]" />
        <a class="remove_field"><i class="fa fa-times"></i></a>
    </div>
    <?php } } ?>    
    </div>
</div>

【问题讨论】:

  • 我认为你做错了逻辑
  • 是的,我确实意识到了,但我仍然很困惑,你能帮我吗??
  • 请查看答案

标签: php mysql


【解决方案1】:

据我了解,您只需要这些东西,为什么要进行复杂的编码

$video_link = $_POST['video_link'];

//First Remove All ID
mysqli_query($connect, "DELETE FROM video_slides WHERE model_id='$model_id'");

//Then After insert updated data
foreach($video_link as $key=>$val){
    mysqli_query($connect, "INSERT INTO `video_slides`(`embeded_link`, `model_id`) VALUES ('$val', '$model_id')");
}

【讨论】:

  • 警告:在 C:\wamp\www\primi\dashboard\includes\functions.php 中为 foreach() 提供的参数无效
  • 嘿,为什么我要让事情复杂化,哈哈,它对我有用,但是请你在你的答案中做了一些不正确的格式,你可以检查一下吗??
【解决方案2】:

您应该尝试将您的数据库连接外包到一个单独的类中 - 这将导致更好的可读代码。像 Doctrine 这样的 ORM 绝对可以帮助你更好地理解自己的代码。

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2016-09-13
    • 2013-07-13
    • 2019-07-26
    • 2011-04-21
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多