Как вставить в базу данных 3 файла массива по 3 поля

У меня проблема в моем пробном проекте при загрузке нескольких изображений. Я не могу просто использовать для загрузки фиксированное количество файлов. Я пробовал много разных решений на 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');  
         }  
 }  

Моя форма загрузки - Это.

 <!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 файла в базу данных выше .. большое спасибо ..

0
0
23
1

Ответы 1

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

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[]

О, да .. спасибо за ответ .. Но я хочу, чтобы отображение файла вставки было 3 ввода 1 отправка, как моя форма

Hearts as gold 10.09.2018 08:57

а что именно происходит?

Alex 10.09.2018 09:02

и в результате обнаружена ошибка PHP. Серьезность: Уведомление: Неопределенное смещение: 1 Имя файла: controllers / Upload2.php Номер строки: 77 Backtrace: Файл: C: \ xampp \ htdocs \ asset \ application \ controllers \ Upload2.php Line : 77 Функция: _error_handler Файл: C: \ xampp \ htdocs \ asset \ index.php Строка: 315 Функция: require_once

Hearts as gold 10.09.2018 09:03

Другие вопросы по теме