【问题标题】:controller get wrong id from view when submit form in codeigniter控制器在codeigniter中提交表单时从视图中获取错误的ID
【发布时间】:2019-09-02 18:10:34
【问题描述】:

我对 codeigniter 很陌生,对 PHP 也很陌生。我想从数据库和目录中删除一条记录。数据从数据库和目录中删除。当我提交时,删除是成功的,但删除总是从表数据库中选择最后一项删除,而不是从我选择删除的视图中删除。这是我的代码

  1. view.php
<?php foreach ($data as $row) : ?>
    <div class="modal fade" id="deleteModal<?= $row['id']; ?>" tabindex="-1" role="dialog" aria-labelledby="deleteModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="deleteModalLabel">Ready to delete?</h5>
                    <button class="close" type="button" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">×</span>
                    </button>
                </div>
                <div class="modal-body">
                    <?php echo form_open('admin/slider_delete'); ?>
                    <input type="text" name="id" id="id" value="<?= $row['id']; ?>">
                    <div class="form-group row">
                        <label for="slider_name" class="col-sm-3 col-form-label">Slider Name</label>
                        <div class="col-sm-9"><input type="text" class="form-control" name="slider_name" id="slider_name" value="<?= $row['slider_name']; ?>" readonly>
                        </div>
                    </div>
                    <div class="form-group row">
                        <label for="slider_image" class="col-sm-3 col-form-label">Image</label>
                        <div class="col-sm-9">
                            <div class="custom-file">
                                <div class="row">
                                    <div class="col-sm-12">
                                        <input type="hidden" class="form-control" id="slider_image" name="slider_image" value="<?= $row['slider_image']; ?>" readonly>
                                        <img src="<?= base_url('assets/img/slider/') . $row['slider_image']; ?>" id="image-preview" alt="image preview" class="img-thumbnail" style="width : 100px;height:60px;">
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <br><br><br>Are you sure to delete this data?
                </div>
                <div class="modal-footer">
                    <button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
                    <button type="submit" class="btn btn-primary">Update</button> </div>
                <?= var_dump($row); ?>
            </div>
        </div>
    </div>
<?php endforeach ?>
  1. controller.php
    public function slider_delete()
    {
        $id = $this->input->post('id');
        $slider = $this->input->post('slider_image');
        $data = [
            'slider_name' => htmlspecialchars($this->input->post('slider_name', true)),
            'slider_link' => htmlspecialchars($this->input->post('slider_link', true)),
            'text_active' => 1,
            'title_text' => htmlspecialchars_decode($this->input->post('title_text', true)),
            'description' => htmlspecialchars_decode($this->input->post('description', true)),
            'is_active' => 1
        ];
        echo var_dump($id, $data, $slider);
        die;
        $this->slider_model->delete($id, $data, $slider);

        $this->session->set_flashdata('massage', '<div class="alert alert-success" role="alert"> Slider has been delete!</div>');
        redirect('admin/slider');
    }
  1. model.php
    public function delete($id, $data, $slider)
    {
        $this->db->set($data);
        $this->db->where('id', $id);

        unlink(FCPATH . 'assets/img/slider/' . $slider);
        $this->db->delete('slider');
}

【问题讨论】:

  • 您正在循环中添加行 ID。所以,只会发布最新的。
  • Prolly 你应该使循环的每次迭代都成为自己的形式。
  • 谢谢大家,我已经得到答案,我忘了把 放在视图中...现在恢复正常删除:D

标签: php bootstrap-4 codeigniter-3


【解决方案1】:

从您的代码中,您正在为每一行创建一个新表单,但您并没有关闭该表单。因此,ID 变量始终是推断出的封闭形式标记之前的最后一组。行后

<br><br><br>Are you sure to delete this data?

添加

</form>

然后检查显示给浏览器的代码。您应该有与结束表单标签等效的开始表单标签。

【讨论】:

    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2012-01-04
    • 2020-11-19
    相关资源
    最近更新 更多