Замена изображения в базе данных функцией редактирования / обновления - PullRequest
0 голосов
/ 22 февраля 2019

Использование codeigniter 3 Итак, я попробовал некоторые примеры здесь при поиске этой проблемы.Безрезультатно.

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

(Эта проблема только при редактировании, при создании поста она отлично работает).

Так что же мне здесь не хватает?


PS :: Кроме того, если кто-то может дать мне совет о том, как загрузить исходное загруженное изображение в поле редактирования, чтобы, если человек решил сохранить исходное загруженное изображение, ему не нужно повторнодобавь это снова.


Мой контроллер

public function edit($slug){
  $data['categories'] = $this->post_model->get_categories();
  $data['post_image'] = $this->post_model->get_posts('post_image');
  $data['post'] = $this->post_model->get_posts($slug);
  if(empty($data['post'])){
    show_404();
  }
$data['title'] = 'Edit Your Post';
$this->load->view('templates/header');
$this->load->view('posts/edit', $data);
$this->load->view('templates/footer');
}
public function update(){
  if(!$this->session->userdata('logged_in')){
                redirect('users/login');
            }
else{
  if($_FILES['userfile']['name'] != "")
  {
     if($_FILES['userfile']['type'] == 'image/jpeg'){
      $ext = ".jpeg";
    }
      if($_FILES['userfile']['type'] == 'image/jpg'){
       $ext = ".jpg";
     }
      else if($_FILES['userfile']['type'] == 'image/png'){
      $ext = ".png";
    }
}
    $imageedit = time();
            $config = array(
              'file_name' => $imageedit,
              'upload_path' => "assets/images/posts/",
              'allowed_types' => "jpg|png|jpeg",
            );
    $this->upload->initialize($config);
    if(!$this->upload->do_upload('userfile')){
          $this->session->set_flashdata( 'error_msg', $this->upload->display_errors());
               redirect('posts/edit');
             }
             else {
      $this->post_model->update_post($imageedit);
      $imageedit = "assets/images/posts/".$imageedit;
    }
  $slug = $this->post_model->get_posts($slug);
  $this->post_model->update_post();
  $this->session->set_flashdata('post_updated', 'Your post has been updated');
  redirect('posts');
}
}
  }

Модель

public function update_post($imageedit,$slug){

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


  $data = array(

  'title'=>$this->input->post('title'),
  //'slug'=>$slug,
  'body'=> $this->input->post('Description'),
  'post_image' => $imageedit,
  'Number'=> $this->input->post('Number'),
  "Languages"=>$this->input->post('Lang'),
  'site'=>$site

  );
  $this->db->where('id',$this->input->post('id'));
  return $this->db->update('posts',$data);
}

}

?>

1 Ответ

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

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

$this->post_model->update_post(); //Here you are passing nothing in update function.

внесите изменения, как показано ниже.потому что у вас есть функция обновления, например public function update_post($imageedit,$slug)

else
{
    $imageedit = "assets/images/posts/".$imageedit;
}
$slug = $this->post_model->get_posts($slug);

$this->post_model->update_post($imageedit,$slug);  //Update this line.

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

Предположим, вывы получаете все данные изображения, как показано ниже, в функции редактирования.

$data['post_image'] = $this->post_model->get_posts('post_image');
$this->load->view('posts/edit', $data);

Здесь вы получаете данные изображения в виде массива в $ data ['post_image'] и выпередают все эти данные для просмотра файла.

Добавьте приведенный ниже код в поле Просмотр файла над кодом просмотра изображения.Таким образом, пользователь может видеть исходное изображение.

<?php if( $this->uri->segment(2) == 'edit' ) { ?>
Your Original uploaded Image
<img src="assets/images/posts/<?php echo $post_image[0]['post_image']; ?>" title="Image" alt="Image" />
<?php } ?>
<br />
Upload New Image => 
<?php echo form_input(array('type'=>'file','name'=>'userfile','id'=>'userfile','accept'=>'.jpg,.jpeg,.png')); } ?>

Примечание: - Выше приведен только пример того, как отобразить исходное изображение во время редактирования в файле просмотра. Убедитесь, что вы изменили путь к изображениям в соответствии с вашими требованиями.

EDIT => Во время редактирования части представления я отображаю вид как на изображении ниже.Таким образом, пользователь может видеть исходное изображение.

enter image description here

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