не отображает ошибки, но не обновляет данные в codeigniter - PullRequest
0 голосов
/ 29 мая 2020

Я хочу отредактировать некоторые данные после POST на CodeIgniter.

Проблема в том, что при редактировании данные не обновляются, но также не отображается сообщение об ошибке. Почему?

Это мой КОНТРОЛЛЕР

public function edit()
{   

    $user = $this->db->get_where('user', ['user_name' => $this->session->userdata('user_name')])->row_array();

    $this->form_validation->set_rules( 'nama', 'Full Name', 'required',
                               array ( 'required'           => '%s Wajib Harus Diisi'));

    $this->form_validation->set_rules( 'company', 'Company', 'required',
                               array ( 'required'           => '%s Wajib Harus Diisi'));

    $this->form_validation->set_rules( 'hphone', 'Hphone', 'required',
                               array ( 'required'           => '%s Wajib Harus Diisi'));

    $this->form_validation->set_rules( 'website', 'Website');

    $this->form_validation->set_rules ( 'email', 'Email', 'required|valid_email',
                                array ( 'required'          => '%s Wajib Harus Diisi',
                                        'valid_email'       => 'Format $s tidak Valid'));


    if ($this->form_validation->run() == FALSE) {

    $data = array ( 'head_title'        => 'Edit User Profile- Edutech Solution',
                    'title'             => 'Edit Data User',
                    'head_menu'         => 'User Administrator',
                    'sub_title'         => 'Total User',
                    'user'              =>  $user,
                    'isi'               => 'superadmin/user/edit',
                  );

    $this->load->view('superadmin/template/wrapper_admin', $data, FALSE);   

    } else  {   

                $user_name  = $this->input->post('user_name');
                $nama       = $this->input->post('nama');
                $hphone     = $this->input->post('hphone');
                $company    = $this->input->post('company');
                $website    = $this->input->post('website');
                $email      = $this->input->post('email');

                        // jika ada gambar yang di upload
                        $upload_image = $_FILES['image']['nama'];

                        if($upload_image){

                            $config['allowed_types']    = 'gif|jpg|png';
                            $config['max_size']         = '2048'; // 2 MB
                            $config['upload_path']      = '.resch/dev/admin/assets/media/';

                            $this->load->library('upload', $config);

                            if($this->upload->do_upload('image')) {
                                // cek gambar agar tidak doble dan file default tidak terhapus
                                $old_image  = $data['user']['image'];
                                if ($old_image != 'default.png')
                                {
                                    unlink(FCPATH .'resch/dev/admin/assets/media/' .$old_image );
                                }


                                $new_image  = $this->upload->data('file_name');
                                $this->db->set('image', $new_image);


                            }else{
                                echo $this->upload->dispay_errors();
                            }
                        }
                        // END jika ada gambar yang di upload

                $this->db->set('nama', $nama);
                $this->db->set('hphone', $hphone);
                $this->db->set('company', $company);
                $this->db->set('website', $website);
                $this->db->set('email', $email);

                $this->db->where('id_user', $id_user);
                $this->db->update('user');

                // $this->user_model->edit($data);
                $this->session->set_flashdata('msg', 'Data Telah Diupdate');
                redirect(base_url('superadmin/user/edit'),'refresh');

        }
}

и вторая ошибка, обновление данных с изображением не работает.

это ПРОСМОТР РЕДАКТИРОВАТЬ

<?php 
    echo form_open_multipart(base_url('superadmin/user/edit')); 
    ?>

    <div class="kt-form kt-form--label-right">
      <div class="kt-portlet__body">
        <div class="kt-section kt-section--first">
          <div class="kt-section__body">
            <div class="row">
              <label class="col-xl-3"></label>
              <div class="col-lg-9 col-xl-6">
                <h3 class="kt-section__title kt-section__title-sm">User Info:</h3>
              </div>
            </div>
            <div class="form-group row">
              <label class="col-xl-3 col-lg-3 col-form-label">Avatar</label>
              <div class="col-lg-9 col-xl-6">
                <div class="kt-avatar kt-avatar--outline" id="kt_user_avatar">
                  <div class="kt-avatar__holder" style="background-image: url(<?php echo base_url('resch/dev/admin/assets/media/').$user['image'] ?>)">
                  </div>
                  <label for="image" class="kt-avatar__upload" data-toggle="kt-tooltip" title="" data-original-title="Change avatar">
                    <i class="fa fa-pen"></i> 
                    <input class="custom-file-input" type="file" name="image" id="image" accept="image/*">
                  </label>
                  <span class="kt-avatar__cancel" data-toggle="kt-tooltip" title="" data-original-title="Cancel avatar">
                    <i class="fa fa-times"></i>
                  </span>
                </div>
              </div>
            </div>
            <div class="form-group row">
              <label for="nama" class="col-xl-3 col-lg-3 col-form-label">Full Name</label>
              <div class="col-lg-9 col-xl-6">
                <input class="form-control" type="text" name="nama" id="nama" value="<?php echo set_value('$user->nama')?>">
              </div>
            </div>

Я проверял код несколько раз, но ошибок не обнаружил. помогите пожалуйста, чтобы эту проблему можно было решить

1 Ответ

1 голос
/ 30 мая 2020

В вашем else, часть контроллера использует приведенный ниже код только для обновления таблицы

$data = array(
        'user_name'  => $this->input->post('user_name'),
        'nama'       => $this->input->post('nama'),
        'hphone'   => $this->input->post('hphone'),
        'company'    => $this->input->post('company'),
        'website'    => $this->input->post('website'),
        'email'      => $this->input->post('email')
        );
       $this->db->where('id_user', $id_user);
       $this->db->update('user',$data);

в вашем файле представления, измените код на

 <form method = "post" action="base_url('superadmin/user/edit')" multipart >

        <div class="kt-form kt-form--label-right">
          <div class="kt-portlet__body">
            <div class="kt-section kt-section--first">
              <div class="kt-section__body">
                <div class="row">
                  <label class="col-xl-3"></label>
                  <div class="col-lg-9 col-xl-6">
                    <h3 class="kt-section__title kt-section__title-sm">User Info:</h3>
                  </div>
                </div>
                <div class="form-group row">
                  <label class="col-xl-3 col-lg-3 col-form-label">Avatar</label>
                  <div class="col-lg-9 col-xl-6">
                    <div class="kt-avatar kt-avatar--outline" id="kt_user_avatar">
                      <div class="kt-avatar__holder" style="background-image: url(<?php echo base_url('resch/dev/admin/assets/media/').$user['image'] ?>)">
                      </div>
                      <label for="image" class="kt-avatar__upload" data-toggle="kt-tooltip" title="" data-original-title="Change avatar">
                        <i class="fa fa-pen"></i> 
                        <input class="custom-file-input" type="file" name="image" id="image" accept="image/*">
                      </label>
                      <span class="kt-avatar__cancel" data-toggle="kt-tooltip" title="" data-original-title="Cancel avatar">
                        <i class="fa fa-times"></i>
                      </span>
                    </div>
                  </div>
                </div>
                <div class="form-group row">
                  <label for="nama" class="col-xl-3 col-lg-3 col-form-label">Full Name</label>
                  <div class="col-lg-9 col-xl-6">
                    <input class="form-control" type="text" name="nama" id="nama" value="<?php echo set_value('$user->nama')?>">
                  </div>
                </div>

    <input type="submit" name="submit" value="sumbit" >
    </form>

, хотя я не предлагаю вы должны обновлять напрямую с контроллера, для любого запроса, связанного с базой данных, вы всегда должны использовать модели

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