Ошибка при загрузке изображения и имени изображения в базе данных, коде - PullRequest
0 голосов
/ 21 февраля 2019

Произошла ошибка при загрузке изображения в Codeigniter.Имя файла noimage сохраняется в базе данных.

// Загрузка контроллера изображения

      $config['upload_path'] = './assets/Images/profilepictures';
      $config['allowed_types'] = 'gif|jpg|png|jpeg';
      $config['max_size'] = '2048';
      $config['max_width'] = '2000';
      $config['max_height'] = '2000';

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

      if(!$this->upload->do_upload()){
          $errors = array('error' => $this->upload->display_errors());
          $post_image = 'noimage.jpg';
      } else {
          $data = array('upload_data' => $this->upload->data());
          $post_image = $_FILES['userfile']['name'];
      }

      $this->m_user->profilepicture($post_image);
      if($data['user']->profile_pic==null)
      {
            redirect(base_url().'user/profilepicture/');

      }

Модель

    public function profilepicture($post_image){
$userID = $this->session->userdata("user_id");
            $data = array(
            'profile_pic' => $post_image,
            );
      $this->db->where('user_id', $userID);
      $this->db->update('users', $data);
    }

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Когда изображение не загружается, попробуйте перенаправить обратно в форму и не добавлять noimage.jpg в базу данных

if(!$this->upload->do_upload()){
      $errors = array('error' => $this->upload->display_errors());
      //Redirect to form with error message
  } else {
      //Get image name like this
      $data = $this->upload->data();
      $post_image = $data['file_name'];

      //Call model function only when image successfully uploaded
      $this->m_user->profilepicture($post_image);
  }

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

Так, удалите это условие if($data['user']->profile_pic==null)

0 голосов
/ 22 февраля 2019

Ваше имя изображения не вставляется в базу данных, поскольку в вашем запросе на обновление вы не передали значение $ userID .

Изменения в модели =>

public function profilepicture($userID,$post_image)  //Pass $userID here from Controller.
{
    $data = array(
        'profile_pic' => $post_image,
    );
    $this->db->where('user_id', $userID);
    $this->db->update('users', $data);
}

Изменения в контроллере =>

$userID = $data['user']->user_id;  //Add this line.

$this->m_user->profilepicture($userID,$post_image);  //Update here

Ваша страница перенаправленапотому что profile_pic всегда null , поскольку он не обновляется в базе данных.Поэтому после успешного добавления profile_pic в базу данных ваша страница не будет перенаправлена ​​на redirect(base_url().'user/profilepicture/');.

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