Как вставить в базу данных 3 массива файлов на 3 поля - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть проблема в моем проекте по загрузке нескольких изображений. Я не могу просто использовать фиксированное количество файлов для загрузки. Я перепробовал множество решений на StackOverflow, но не смог найти работающее ..

формат моей таблицы в базе данных: введите описание изображения здесь

Вот мой контроллер загрузки

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

   class Upload2 extends CI_Controller {  
     public function __construct() {  
       parent::__construct();  
                         $this->load->helper(array('url','html','form'));  
						 $this->load->model('m_upload');
                 }  
         function index(){  
                 $this->load->view('upload_form');  
         }  
         function upload() {  
                 if($this->input->post('upload'))  
                 {  
						 $foto = array();
                         $number_of_files = sizeof($_FILES['userfiles']['tmp_name']);  
                         $files = $_FILES['userfiles'];  
                                 $config=array(  
                                 'upload_path' => './uploads/', //direktori untuk menyimpan gambar  
                                 'allowed_types' => 'jpg|jpeg|png|gif',  
                                 'max_size' => '2000',  
                                 'max_width' => '2000',  
                                 'max_height' => '2000'  
                                 );  
                         for ($i = 0;$i < $number_of_files; $i++)  
                         {  
                                $_FILES['userfile']['name'] = $files['name'][$i];  
                                $_FILES['userfile']['type'] = $files['type'][$i];  
                                $_FILES['userfile']['tmp_name'] = $files['tmp_name'][$i];  
                                $_FILES['userfile']['error'] = $files['error'][$i];  
                                $_FILES['userfile']['size'] = $files['size'][$i];  
                                $this->load->library('upload', $config);  
                                $this->upload->do_upload('userfile');
								$foto[] = $this->upload->data();
								$data = array(
								
											  //$data[$parts[0]] = isset($parts[1]) ? $parts[1] : null;
											  'foto'       => $foto[0]['file_name'],
											  'foto_ktp' => $foto[1]['file_name'],
											  'foto_npwp' => $foto[2]['file_name']
											  
											);
											//$this->m_upload->m_upload($data);
											$result_set = $this->m_upload->insert($data);
							
                         }  
                 }  
                         $this->load->view('upload_success');  
         }  
 }  

Моя форма загрузки: This.

 <!DOCTYPE html>  
 <html>  
	 <head>  
			 <title>Tutorial CodeIgniter with Gun Gun Priatna</title>  
	 </head>  
	 <body>  
	 <h2>Upload Gambar</h2>  
			 <?php echo form_open_multipart('index.php/upload2/upload'); ?>  
					 <table>  
							 <tr>  
									 <td>FILE 1<input type="file" name="userfiles[0]" /></td>
									 <td>FILE 2<input type="file" name="userfiles[1]" /></td>
									 <td>FILE 3<input type="file" name="userfiles[2]" /></td>
							 </tr>  
							 <tr>  
									 <td><input type="submit" name="upload" value="upload"></td>  
							 </tr>  
					 </table>  
			 <?php echo form_close();?>  
	 </body>  
 </html>  

как исправить вставку файла 3 в базу данных выше ... большое спасибо ..

1 Ответ

0 голосов
/ 10 сентября 2018

Вы вставляете в цикл, который вы хотите вставить после цикла, когда у вас есть все файлы.

PHP:

function upload() {
    if (!empty($_FILES['userfiles']['name'])) {
        $foto = array();
        $number_of_files = count($_FILES['userfiles']['tmp_name']);
        $files = $_FILES['userfiles'];
        $config = array(
            'upload_path' => './uploads/', //direktori untuk menyimpan gambar  
            'allowed_types' => 'jpg|jpeg|png|gif',
            'max_size' => '2000',
            'max_width' => '2000',
            'max_height' => '2000'
        );
        $this->load->library('upload', $config);
        $foto = array();
        for ($i = 0; $i < $number_of_files; $i++) {
            $_FILES['userfile']['name'] = $files['name'][$i];
            $_FILES['userfile']['type'] = $files['type'][$i];
            $_FILES['userfile']['tmp_name'] = $files['tmp_name'][$i];
            $_FILES['userfile']['error'] = $files['error'][$i];
            $_FILES['userfile']['size'] = $files['size'][$i];
            if (!$this->upload->do_upload('userfile')) {
                show_error($this->upload->display_errors());
            }
            $foto[] = $this->upload->data('file_name');
        }
        $data = array(
            'foto' => $foto[0],
            'foto_ktp' => $foto[1],
            'foto_npwp' => $foto[2]
        );
        $this->m_upload->insert($data);
        $this->load->view('upload_success');
    } else {
        show_error('No files uploaded!');
    }
}

HTML:

Не нужно userfiles[2] просто позвоните им userfiles[]

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