Обновление строк в таблице MySQL с помощью CodeIgniter - PullRequest
3 голосов
/ 17 ноября 2011

Итак, я новичок в PHP и MySQL в целом, а также в приложениях MVC.Простите, если на этот вопрос уже был дан ответ, я не смог найти ничего, что было бы кристально чистым и показало полный поток MVC этого.

Итак, у меня есть HTML-таблица, заполненная входными данными, заполненными даннымив, я генерирую форму для каждой строки в виде отдельной таблицы и кнопку отправки для каждой.Я хочу, чтобы кнопка обновления обновляла только строку, связанную с сгенерированной формой.

Если удалить this->db->where('id', $id); из модели, она обновляет все строки в таблице с одинаковой информацией, при этом ничего не обновляется.

Любая помощь или альтернативный метод для достижения этой цели будет наиболее ценным.Я думаю, что функция контроллера не так уж и плоха.

Спасибо.

VIEW

<?php foreach($log->result() as $row): ?>
<?=form_open('hq/update_entry');?>
    <table class="editLog">
        <tr>
            <td><?php 
                $data = array(
                    'name' => 'no',
                    'value' => $row->no
                );
                echo form_input($data);
                ?></td>
            <td><?php 
                $data = array(
                    'name' => 'date',
                    'value' => $row->date
                );
                echo form_input($data);
                ?></td>
            <td><?php 
                $data = array(
                    'name' => 'artist',
                    'value' => $row->artist
                );
                echo form_input($data);
                ?></td>
            <td><?php 
                $data = array(
                    'name' => 'title',
                    'value' => $row->title
                );
                echo form_input($data);
                ?></td>
            <td><?php 
                $data = array(
                    'name' => 'long',
                    'value' => $row->long
                );
                echo form_input($data);
                ?></td>
            <td><?php 
                $data = array(
                    'name' => 'lat',
                    'value' => $row->lat
                );
                echo form_input($data);
                ?></td>
                <td>
            <?php
                echo form_hidden('id', $row->id);
                $data = array(
                    'class' => 'updateSubmit',
                    'value' => '✚'
                );
                echo form_submit($data);
            ?></td>
        </tr>
    </table>
<?=form_close();?>

КОНТРОЛЛЕР

function update_entry()
{
    $this->load->model('update_entry_model');

    if($query = $this->update_entry_model->update())
    {
        $this->index();
    }
    else
    {
        redirect('hq');
    }
}

МОДЕЛЬ

<?php
    class Update_entry_model extends CI_Model {
        function update()
        {
            $data = array(
                'no' => $this->input->post('no'),
                'date' => $this->input->post('date'),
                'artist' => $this->input->post('artist'),
                'title' => $this->input->post('title'),
                'long' => $this->input->post('long'),
                'lat' => $this->input->post('lat')
            );
            $this->db->where('id', $id);
            $this->db->update('entries', $data);
        }
    }

1 Ответ

3 голосов
/ 17 ноября 2011

Без дальнейших исследований я вижу, что в функции обновления модели () вы пропускаете

$id = $this->input->post('id');

Причина, по которой добавление this->db->where('id', $id); ничего не обновляет, заключается в том, что $ id в настоящее время отсутствуетустановить любое значение.

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