Так что это проблема, я пытаюсь загрузить несколько файлов в CodeIgniter, но я также хочу отправить его в две таблицы в базе данных.
AI = "auto_increment";
ci_posts: post_id(AI), post_image.
ci_relationship: id(AI), post_id.
Таким образом, в основном для каждого изображения, загруженного в таблицу ci_posts, они также должны быть представлены в таблицу ci_relationship.
Вот мой контроллер:
public function newphoto($id){
// Check Login
if(!$this->session->userdata('user_id')){
// Redirect to page
redirect('users/login');
}
// Field Rules
$this->form_validation->set_rules('title', 'Title', 'trim');
if ($this->form_validation->run() == FALSE) {
// Set error message
$this->session->set_flashdata('error', 'You must select one or more images');
// Redirect
redirect('users/album/'.$id.'/'.$this->session->userdata('username'));
} else {
// Multiple File Upload
$data = array();
if($this->input->post('mysubmit') && !empty($_FILES['post_image']['name'])){
$filesCount = count($_FILES['post_image']['name']);
for($i = 0; $i < $filesCount; $i++){
$file_name = 'post_image[]';
$_FILES[$file_name]['name'] = $_FILES['post_image']['name'][$i];
$_FILES[$file_name]['type'] = $_FILES['post_image']['type'][$i];
$_FILES[$file_name]['tmp_name'] = $_FILES['post_image']['tmp_name'][$i];
$_FILES[$file_name]['error'] = $_FILES['post_image']['error'][$i];
$_FILES[$file_name]['size'] = $_FILES['post_image']['size'][$i];
// Create user folder
$folder = $this->session->userdata('username');
// Upload Status Image
$config['upload_path'] = 'assets/img/users/media/'.$folder.'/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = 0;
$config['encrypt_name'] = TRUE;
$config['remove_spaces'] = TRUE;
$config['detect_mime'] = TRUE;
$config['mod_mime_fix'] = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
// If username folder does not exist, create it
if(!is_dir($config['upload_path'])) {
mkdir($config['upload_path'], 0777, TRUE);
}
// If files selected send them to ci_posts
if($this->upload->do_upload($file_name)){
$fileData = $this->upload->data('file_name');
$upload_data[$i]['post_image'] = $fileData;
$this->db->insert_batch('ci_posts', $data);
}
// Get last post id for relationship data
$post_id = $this->db->insert_id();
// Relationship Array
$data[$i] = array(
'parent_id' => $id,
'post_id' => $post_id,
'user_id' => $this->session->userdata('user_id'),
'status' => 'published',
'type' => 'user_media',
);
// Insert relationship
$this->db->insert_batch('ci_relationship', $data);
// Set Message
$this->session->set_flashdata('success', 'Photo has been added');
// Redirect
redirect('users/album/'.$id.'/'.$this->session->userdata('username'));
}
}
}
}
и вот мой взгляд:
<?= form_open_multipart('users/newphoto/'.$album->post_id, $attributes, $hidden); ?>
<!-- <div id="extraInputsContainer"></div> -->
<div class="input-group">
<label class="input-group-btn">
<span class="btn btn-warning">
Browse
<?php $data = array(
'id' => 'post_image',
'name' => 'post_image[]',
'class' => 'form-control',
'value' => set_value('post_image'),
'style' => 'display:none',
); ?>
<?= form_upload($data, '', 'multiple'); ?>
</span>
</label>
<input type="text" class="form-control" readonly>
</div>
<?php
$args = array(
'id' => 'mysubmit',
'name' => 'mysubmit',
'class' => 'btn btn-warning btn-sm',
);
$value = html_escape('Submit');
$extra = array(
'onclick' => '',
);
?>
<?= form_submit($args, $value, $extra); ?>
<?= form_close(); ?>
Заранее спасибо.
ПРИМЕЧАНИЕ. Текущий вывод — это одно изображение для каждого раза, когда я заполняю форму.
Задача ещё не решена.
Других решений пока нет …