2015-02-27 2 views
1

Я искал много примеров, и я сделал что-то, что я могу сделать.CodeIgniter: Как я могу сохранить имя фотографии в базе данных?

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

что я сделал

  • текстовые поля хранятся в базе данных. Здесь показано только одно поле. (Успешно)
  • Фото хранится в папке после представленного вида (успешно)

Мне нужно, чтобы ты помог мне

  • Названия фотографии не хранятся в базе данных. он сохраняется в папке.

Коды ниже.

Модель

public function registration($post) 
{ 
    $this->db->insert('registration', $post); 
} 

Контроллер

function do_upload() 
{ 
    $post = $this->input->post(); 
    $this->form_validation->set_rules('Name','Name','trim|required|xss_clean'); 

    $config['upload_path']  = 'uploads/'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size']  = '100'; 
    $config['max_width']  = '1024'; 
    $config['max_height']  = '768'; 

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

    if (! $this->upload->do_upload()) 
    { 
     $error = array('error' => $this->upload->display_errors()); 
     $this->load->view('example/registration_form', $error); 
    } 
    else 
    { 
     $data = array('upload_data' => $this->upload->data()); 
     $result = $this->register_model->registration($post); 
     $this->load->view('upload_success', $data, $result); 
    } 
} 

Посмотреть

<?php echo form_open_multipart('upload/do_upload');?> 
    <input type="file" name="userfile" size="20" /> 
    <br /> 
    <input type="text" name="name" class="form-control" placeholder="Your name"> 

    <input type="submit" value="upload" /> 
</form> 

Это PHOTO_NAME в базе данных. Он будет написан на контроллере или модели? Как мне сделать в основном?

ответ

3

Вам нужно использовать переменную для $this->do_upload->data(), если вы хотите вставить содержимое в базу данных.

Пример: $data_file = $this->do_upload->data();

Пример: $data_file['file_name']

$data = array(
'file_name' => $data_file['file_name'], 
'file_type' => $data_file['file_type'], 
'full_path' => $data_file['full_path'], 
'raw_name' => $data_file['raw_name'], 
'orig_name' => $data_file['orig_name'], 
'client_name' => $data_file['client_name'], 
'file_ext' => $data_file['file_ext'], 
'file_size' => $data_file['file_size'], 
'is_image' => $data_file['is_image'], 
'image_width' => $data_file['image_width'], 
'image_height' => $data_file['image_height'], 
'image_type' => $data_file['image_type'], 
'image_size_str' => $data_file['image_size_str'] 
); 

$this->db->where('whatever', $whatever); 
$this->db->update('tablename', $data); 

Или

$data = array(
'file_name' => $data_file['file_name'], 
'file_type' => $data_file['file_type'], 
'full_path' => $data_file['full_path'], 
'raw_name' => $data_file['raw_name'], 
'orig_name' => $data_file['orig_name'], 
'client_name' => $data_file['client_name'], 
'file_ext' => $data_file['file_ext'], 
'file_size' => $data_file['file_size'], 
'is_image' => $data_file['is_image'], 
'image_width' => $data_file['image_width'], 
'image_height' => $data_file['image_height'], 
'image_type' => $data_file['image_type'], 
'image_size_str' => $data_file['image_size_str'] 
); 


$this->db->insert('tablename', $data); 
+0

Спасибо за комментарий. Коды, которые вы написали, будут в файле модели или контроллера? – Baris

+0

В успешной части '$ this-> upload-> do_upload()' это просто основной способ сделать это. – user4419336

+0

Я понял, что вы говорили о массиве после того, как я увидел библиотеку для загрузки :) Это сработало! Благодарю. – Baris

Смежные вопросы