Обновление CodeIgniter не работает полностью - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь обновить таблицу mySQL при использовании CodeIgniter.

Контроллер

У меня есть redirect (), закомментированный для использования print_r (). Когда он возвращает массив, он возвращает правильные обновленные значения. Но если я раскомментирую редирект, он перенаправит меня на страницу с таблицей, и значения не будут обновлены. Я также проверяю phpMyAdmin, чтобы убедиться, что значения не обновляются и не просто отображаются, но и не обновляются. Это сбивает меня с толку, потому что print_r () возвращает правильные значения.

<?php
class update_ctrl extends CI_Controller {
    function __construct(){
        parent::__construct();
        $this->load->model('update_model');
    }

    public function updateGame($id){
        $this->load->model('update_model');
        $data['games'] = $this->update_model->getGame($id);
        $this->load->view('update_view', $data);
        $this->load->view('footer');
    }

    public function update(){
        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<span class="error">', '</span>');
        $this->form_validation->set_rules('name', 'Name', 'trim|required');
        $this->form_validation->set_rules('genre', 'Genre', 'trim|required');
        $this->form_validation->set_rules('developer', 'Developer', 'trim|required');
        $this->form_validation->set_rules('year', 'YearReleased', 'trim|required|numeric');
        $this->form_validation->set_rules('price', 'Price', 'trim|required|numeric');
        $id = $this->input->post('ID');
        $data = array(
                                'Name' => $this->input->post('name'),
                                'Genre' => $this->input->post('genre'),
                                'Developer' => $this->input->post('developer'),
                                'YearReleased' => $this->input->post('year'),
                                'Price' => $this->input->post('price')
                        );
            $this->load->model('update_model');
            $this->update_model->update($id, $data);
            $this->session->set_flashdata('msg', 'Game Updated!');
            print_r($data);
            //redirect('');
        }
    }
?>

Модель

<?php
class update_model extends CI_Model {
    public function getGame($id) {
        $this->db->select('*');
        $this->db->from('games');
        $this->db->where('ID', $id);
        $query = $this->db->get();
        if ($query->num_rows() > 0){
            return $query->result();
        } else {
            return $query->result();
        }
    }

    public function update($id, $data){
        $this->db->where('ID', $id);
        $this->db->update('games', $data);
    }
}
?>

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Закомментируйте все ваши $this->form_validation->set_rules и попробуйте снова, я думаю, что числовая проверка получит ошибки

 public function update(){
    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');
    //$this->form_validation->set_error_delimiters('<span class="error">', '</span>');
    //$this->form_validation->set_rules('name', 'Name', 'trim|required');
    //$this->form_validation->set_rules('genre', 'Genre', 'trim|required');
    //$this->form_validation->set_rules('developer', 'Developer', 'trim|required');
    //$this->form_validation->set_rules('year', 'YearReleased', 'trim|required|numeric');
    //$this->form_validation->set_rules('price', 'Price', 'trim|required|numeric');
    $id = $this->input->post('ID');
    $data = array(
                            'Name' => $this->input->post('name'),
                            'Genre' => $this->input->post('genre'),
                            'Developer' => $this->input->post('developer'),
                            'YearReleased' => $this->input->post('year'),
                            'Price' => $this->input->post('price')
                    );
        $this->load->model('update_model');
        $this->update_model->update($id, $data);
        $this->session->set_flashdata('msg', 'Game Updated!');
        print_r($data);
        //redirect('');
    }
}
0 голосов
/ 03 мая 2018

Единственное, о чем я могу думать, это то, что ваш запрос молча проваливается. Перейдите в database.php и измените db_debug на TRUE и снова запустите все.

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

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