Codeigniter Неопределенное смещение: 0 при отправке формы - PullRequest
1 голос
/ 06 июля 2019

Неопределенное смещение: 0 ошибка происходит в моей форме редактирования данных после отправки. Иногда это работает, и в большинстве случаев это не так. есть идеи, где происходит ошибка?

 function data_user_edit($id = ''){

$user = $this->adminmodel->selectdata('user where id_user = "'.$id.'"')->result_array();

            $data = array(
                'title'             => '.:: EVALUASI PROSES BELAJAR MENGAJAR GURU SMA NEGERI 4 BEKASI::. ',
                'titlesistem'       => $this->model->getTitle(),
                'nama'              => $user[0]["nama"],
                'id_user'           => $user[0]["id_user"],
                'status'            => 'edit',
                'username'          => $user[0]["username"],
                'password'          => $user[0]["password"],
                'level'             => $user[0]["level"],
                'tipeakun'          => $user[0]["tipeakun"],
        );

            $this->load->view('admin/header',$data);
            $this->load->view('admin/data_user_form');
            $this->load->view('admin/footer');

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Представьте себе сценарий, особенно с публичным контроллером, когда пользователь вручную обращается к вашему somepage/data_user_edit и не вводит свой идентификатор. Это ошибка, которую они получат, потому что $user возвращает bool или нет строк, поэтому $user[0] не определено.

Во-первых, если это страница редактирования пользователя, то я весьма удивлен, что вы позволяете им вручную вводить их идентификатор в URL-адрес и, по-видимому, изменять данные других пользователей, просто изменяя URL-адрес. Это должно быть получено из переменной session, и они должны быть зарегистрированы, чтобы видеть даже достижения страницы.

Во-вторых, вы всегда должны, как само собой разумеющееся, проверять, если num_rows() > 0, прежде чем пытаться получить доступ к вашему result.

В-третьих, вы можете просто использовать row_array() для одной записи вместо result_array(). Вам не понадобится $user[0], и вы можете просто использовать $user

, например

if (is_null($this->session->id)) {
    show_error('not allowed');
}

$id = $this->session->id;

$query = $this->adminmodel->selectdata('user where id_user = "'.$id.'"');

if ($query->num_rows() !== 1) {
    show_error('no user with id');
}

$user = $query->row_array();

            $data = array(
                'title'             => '.:: EVALUASI PROSES BELAJAR MENGAJAR GURU SMA NEGERI 4 BEKASI::. ',
                'titlesistem'       => $this->model->getTitle(),
                'nama'              => $user["nama"],
                'id_user'           => $user["id_user"],
                'status'            => 'edit',
                'username'          => $user["username"],
                'password'          => $user["password"],
                'level'             => $user["level"],
                'tipeakun'          => $user["tipeakun"],
        );

            $this->load->view('admin/header',$data);
            $this->load->view('admin/data_user_form');
            $this->load->view('admin/footer');
0 голосов
/ 06 июля 2019

Отметьте $user пусто или нет и убедитесь, что это правильный код, который вы вводите

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