Codeigniter - вставить пакет в базу данных после загрузки изображения - PullRequest
0 голосов
/ 01 сентября 2018

Я хочу загрузить несколько изображений, максимальный размер файла составляет 2 МБ, и он работает, но при попытке вставить в базу данных это не удалось. Я пытался, но не могу найти решение этой проблемы. вот код:

Контроллер

<code>function add_portfolio(){

$this->load->library('upload');
$dataInfo = array();
$image = array();
$files = $_FILES;
$cpt = count($_FILES['userfile']['name']);
for($i=0; $i<$cpt; $i++)
{
    $_FILES['userfile']['name']= $files['userfile']['name'][$i];
    $_FILES['userfile']['type']= $files['userfile']['type'][$i];
    $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
    $_FILES['userfile']['error']= $files['userfile']['error'][$i];
    $_FILES['userfile']['size']= $files['userfile']['size'][$i];

    $this->upload->initialize($this->set_upload_options());
    $this->upload->do_upload('userfile');
    $dataInfo[] = $this->upload->data();

    if ( ! $this->upload->do_upload('userfile'))
            {
              echo    $error = $this->upload->display_errors();
            }
            else
            {

               $image[] = array(
                 'id_relasi' => $id,
                 'jenis_image' => 'portfolio',
                 'image' => $dataInfo[$i]['file_name']
                 );


                  $this->db->insert_batch('image', $image);
                   redirect(base_url('Worker/Akun/'));
                   // echo '<pre>' ;
                   // print_r($image);
                   // echo '
'; } } }

Изображение конфигурации

private function set_upload_options(){
    $config = array();
    $config['upload_path'] = 'assets/user/images/img/'; 
    $config['remove_spaces']=TRUE;
    $config['encrypt_name'] = TRUE; 
    $config['allowed_types'] = 'gif|jpg|png|JPEG|jpeg';
    $config['max_size'] = '2097152';
    $config['overwrite'] = FALSE;
    return $config;
}

но я думаю, проблема в массиве.

Для вставки массива Batch необходимо вот так

$data = array(
        array(
                'title' => 'My title',
                'name' => 'My Name',
                'date' => 'My date'
        ),
        array(
                'title' => 'Another title',
                'name' => 'Another Name',
                'date' => 'Another date'
        )
);

и это мой массив, когда я загружаю 3 изображения:

Array
(
    [0] => Array
        (
            [id_relasi] => 1379108884
            [jenis_image] => portfolio
            [image] => 0b91d67888c164809b0ff5b38871a685.jpg
        )

)

Array
(
    [0] => Array
        (
            [id_relasi] => 1379108884
            [jenis_image] => portfolio
            [image] => 0b91d67888c164809b0ff5b38871a685.jpg
        )

    [1] => Array
        (
            [id_relasi] => 1913645310
            [jenis_image] => portfolio
            [image] => 5d29df6d3eff731aa408de47767225b6.jpg
        )

)

Array
(
    [0] => Array
        (
            [id_relasi] => 1379108884
            [jenis_image] => portfolio
            [image] => 0b91d67888c164809b0ff5b38871a685.jpg
        )

    [1] => Array
        (
            [id_relasi] => 1913645310
            [jenis_image] => portfolio
            [image] => 5d29df6d3eff731aa408de47767225b6.jpg
        )

    [2] => Array
        (
            [id_relasi] => 31208956
            [jenis_image] => portfolio
            [image] => 3bea22e3ef638046f082a64a2f27e6e6.png
        )

)

1 Ответ

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

Возьмите insert_batch вне цикла for.

<code>function add_portfolio(){

$this->load->library('upload');
$dataInfo = array();
$image = array();
$files = $_FILES;
$cpt = count($_FILES['userfile']['name']);
$error= [];
for($i=0; $i<$cpt; $i++)
{
    $_FILES['userfile']['name']= $files['userfile']['name'][$i];
    $_FILES['userfile']['type']= $files['userfile']['type'][$i];
    $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
    $_FILES['userfile']['error']= $files['userfile']['error'][$i];
    $_FILES['userfile']['size']= $files['userfile']['size'][$i];

    $this->upload->initialize($this->set_upload_options());
    $this->upload->do_upload('userfile');
    $dataInfo[] = $this->upload->data();

    $image[] = array(
                 'id_relasi' => $id,
                 'jenis_image' => 'portfolio',
                 'image' => $dataInfo[$i]['file_name']
                 );


    if ( ! $this->upload->do_upload('userfile'))
    {
              $error[] =  $this->upload->display_errors();
    }
  }

  //outside for loop

  if(!empty($uploaded)) {
    echo explode('<br>',$error);
  }
  else {
    $this->db->insert_batch('image', $image);
    redirect(base_url('Worker/Akun/'));
    // echo '<pre>' ;
    // print_r($image);
    // echo '
'; } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...