Как импортировать CSV-файл в базу данных и переместить в папку, используя jquery ajax в codeigniter? - PullRequest
0 голосов
/ 09 января 2019

Просмотров: 1001 * *

<script>
    $(document).ready(function(){
        $('#upload_csv').on("submit",function(e){  
                    e.preventDefault(); 
                    $.ajax({  
                         url:"<?php echo base_url(); ?>import",  
                         method:"POST",  
                         data:new FormData(this),  
                         contentType:false, 
                         cache:false, 
                         processData:false,  
                         success: function(data){  
                              if(data=='Error1')  
                              {  
                                   alert("Invalid File");  
                              }  
                              else if(data == "Error2")  
                              {  
                                   alert("Please Select File");  
                              }  
                              else  
                              {  
                                   $('#success').html(data);  
                              }  
                         }  
                    })  
               });  
    });
</script>
<form id="upload_csv" method="post" enctype="multipart/form-data">
    <input type="file" id="files" name="files">
    <input type="submit" class="btn btn-primary" id="submit" name="submit">
</form>

Контроллер:

public function import()
{
    if(!empty($_FILES["files"]["name"]))  
    {   
        $output = '';  
        $allowed_ext = array("csv");  
        $tmp = explode(".", $_FILES["files"]["name"]);  
        $extension = end($tmp);
        if(in_array($extension, $allowed_ext))  
        {  
            $file_data = fopen($_FILES["files"]["tmp_name"], 'r');  
            print_r(fgetcsv($file_data));

        }  
        else  
        {  
            echo 'Error1';  
        }  
    }  
    else  
    {  
        echo "Error2";  
    }  
}

В этом коде я хочу импортировать csv file в мою базу данных, а также переместить CSV-файл в папку. Теперь, что на самом деле происходит, когда я нажимаю на кнопку отправки, я использую print_r(fgetcsv($file_data));, чтобы узнать вывод файла CSV, тогда он печатает

Array ( [0] => Id [1] => first_name [2] => last_name [3] => phone [4] => email )

но у меня есть 200 строк в моем CSV-файле. Итак, как я могу это сделать? Пожалуйста, помогите мне.

Спасибо

1 Ответ

0 голосов
/ 09 января 2019

у вас функция импорта

  public function import()
            {
                    $config['upload_path']          = './uploads/';
                    $config['allowed_types']        = 'csv';

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

                    if ( ! $this->upload->do_upload('files'))
                    {
                            print_r($this->upload->display_errors());
                            EXIT;
                    }
                    else
                    {
                    $fData = $this->upload->data();        
    $data = array();
    $file = fopen($fData['file_name'], "r");
             while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
             {
                $data[] = array(
                'fieldname1' => $emapData[0];
                'fieldname2' => $emapData[1];
                );
    // array for active record 
             }
             fclose($file);
             $this->load->model('any_model');
             $this->any_model->batch_data($data);
             echo "CSV File has been successfully Imported.";

                    }
            }
    }

модель:

function batch_data($data = array())
{
 $this->db->insert_batch('table_name',$data);
}

это шаги, которые вы должны выполнить ...

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