codeigniter загрузить обновление изображения - PullRequest
0 голосов
/ 04 марта 2011

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

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

Вот мое редактирование в контроллере профиля

    <?php
          function edit_profile()
          {
              $id=$this->uri->segment(3);
              $this->load->model('profile_model');      
              $this->load->library('form_validation');
            // field name, error message, validation rules
            $this->form_validation->set_rules('name', 'Name', 'trim|required');
            $this->form_validation->set_rules('city', 'City', 'trim|required');
            $this->form_validation->set_rules('telno', 'Tel no.', 'trim|required');

              if ($this->form_validation->run() == FALSE )
              {
                if(empty($id)) $id=$this->input->post('id');

                $data['result'] = $this->profile_model->profile_hotel($id);   
                $data['id']=$id;
                $this->load->view('profile/edit_form', $data);
              }
              else{ 
            if(isset($_FILES['profile_avatar']))
            {
              $this->load->model('profile_model');
              $file = read_file($_FILES['upload']['tmp_name']);
              $profile_avatar = basename($_FILES['upload']['name']);

              write_file('files/'.$profile_avatar, $file);

              $this->profile_model->update_profile($profile_avatar);
            }
              }    
          }

/* My update function in profile_model */

  function update_profile($profile_field)
   {
    if(!empty($profile_field)){
      $profile_avatar = $this->input->post('profile_avatar');
    }
    else{
      $profile_avatar = $profile_field;
    }
      $id = $this->input->post('id');
      $new_profile_update_data = array( 
      'name' => $this->input->post('name'),
      'city' => $this->input->post('city'),
      'telno' => $this->input->post('telno'),
      'avatar' => $profile_avatar,
      );
      $this->db->where('id', $id);
      $this->db->update('tbl_profile', $new_profile_update_data);
  }

?>

/*My profile edit view*/

<?php

   echo form_open_multipart('profile/edit_profile').'<br/>';
   $fetch=$result->row();
?>
<img width="200" height="200" src="<?php echo base_url()?>files/<?php echo $fetch->hotel_logo;?>"><br/>
<?php

   echo form_hidden('id',$id);
   echo form_hidden('profile_avatar', $fetch->profile_avatar).'<br/>';     
   echo '<span>avatar</span>';
   echo '<input type="file" name="profile_avatar" />'.'<br/>';
   echo form_input('name', $fetch->name).form_error('name').'<br/>';
   echo form_input('city', $fetch->city) .form_error ('city').'<br/>';
   echo form_input('telno', $fetch->telno).form_error ('telno').'<br/>';

   echo form_submit('submit', 'Save');
  ?>
  <?php echo validation_errors('<p class="errors">');?>

Ответы [ 2 ]

0 голосов
/ 07 марта 2011

Dave:

посмотрите в модели, где:

if (!empty($profile_field)) {
    $profile_avatar = $this->input->post('profile_avatar');
} else {
    $profile_avatar = $profile_field;
}

я думаю, что есть "!" это не правильно. это должно быть

if (empty($profile_field)) {
    $profile_avatar = $this->input->post('profile_avatar');
} else {
    $profile_avatar = $profile_field;
}

может быть это ошибка

0 голосов
/ 04 марта 2011

Если вы хотите перезаписать старый файл аватара, вы должны загрузить путь к вашему старому образу из базы данных, unlink (удалить) старый файл, затем записать новый файл и, наконец, записать путь к новому файлу вбаза данных.

...