Контроллер получает неверный идентификатор из поля зрения при отправке формы в codeigniter - PullRequest
0 голосов
/ 12 апреля 2019

Я довольно плохо знаком с 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 ?>
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');
    }
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');
}

1 Ответ

1 голос
/ 12 апреля 2019

Из своего кода вы создаете новую форму для каждой строки, но не закрываете форму. Таким образом, переменная ID всегда является последней, установленной перед выведенным тегом закрытой формы. После линии

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

Добавить

</form>

Затем проверьте ваш код, который отображается в браузере. У вас должны быть эквивалентные открывающие теги формы для закрывающих тегов формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...