Вставить данные из CSV в базу данных codeigniter - PullRequest
0 голосов
/ 23 мая 2018

Мне нужен ваш совет для вставки данных из CSV в мою базу данных в Codeigniter, раньше я добился успеха, но не в этом случае.Поэтому в этом случае мне нужно сначала выбрать id из другой таблицы и ввести его значение,

, это мой контроллер:

function imports($aid)
{
  $file_data = $this->csvimport->get_array($_FILES["csv_file"]["tmp_name"]);
  foreach(array_slice($file_data, 1) as $row)
  {
    $pid = $this->m_csvimport->getid($row["nip"]);
    $array [] =array(
      'aid' => $aid,
      'pid' => $pid,
      'kodeunik' => '',
      );
  }
  $this->m_csvimport->inserts($array);
}

это моя модель:

function getid($nip)
{
    $this->db->select('id');
    $this->db->from('or_peserta');
    $this->db->where('nip',$nip);
    $query = $this->db->get();

    return $query->result();
}

function inserts($array)
{
    $this->db->insert_batch('or_tr_pa',$array);
}

Как получить идентификатор на основе строки Csv и использовать его в своем массиве.Пожалуйста, помогите мне исправить мою ошибку.

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Надеюсь, это поможет вам:

Вы должны вернуть только идентификатор вашей модели, например:

public function getid($nip)
{
    $this->db->select('id');
    $this->db->from('or_peserta');
    $this->db->where('nip',$nip);
    $query = $this->db->get();

    return $query->row()->id;
}

Ваш контроллер останется таким, как есть

public function imports($aid)
{
  $file_data = $this->csvimport->get_array($_FILES["csv_file"]["tmp_name"]);
  foreach(array_slice($file_data, 1) as $row)
  {
    $pid = $this->m_csvimport->getid($row["nip"]);
    $array [] =array(
      'aid' => $aid,
      'pid' => $pid,
      'kodeunik' => '',
      );
  }
  /* print_r($array) to check the data */

  $this->m_csvimport->inserts($array);
}
0 голосов
/ 23 мая 2018
     Please Try this one

   html file
        ---------------------------------------------------
        <form method="post" id="import_form" enctype="multipart/form-data">
                    <p><label>Select Excel File</label>
                    <input type="file" name="file" id="file" required ></p>
                    <br />
                    <input type="submit" name="import" value="Import" class="btn btn-info" />
        </form>

        Jquery
        --------------------------------------------------------------------

        $(document).ready(function(){

        $('#import_form').on('submit', function(event){
                event.preventDefault();
                        $.ajax({
                    url:"<?php echo base_url(); ?>index.php/Controller/import",
                    method:"POST",
                    data:new FormData(this),
                    contentType:false,
                    cache:false,
                    processData:false,
                    success:function(data){

                        $('#file').val('');
                         $('#omrs').html('<span style="color: green;">'+data+"</span>");

                    }
                })
            });

        });

        Controller
        --------------------------------------------------------------
    function import()

    {


        if(isset($_FILES["file"]["name"]))

        {

            $path = $_FILES["file"]["tmp_name"];

            $object = PHPExcel_IOFactory::load($path);

            foreach($object->getWorksheetIterator() as $worksheet)

            {

                    $highestRow = $worksheet->getHighestRow();

                    $highestColumn = $worksheet->getHighestColumn();

                    for($row=0; $row<=$highestRow; $row++)

                    {
                        $student_fk = $worksheet->getCellByColumnAndRow(0, $row)->getValue();

                    $student_subject_name = $worksheet->getCellByColumnAndRow(1, $row)->getValue();

    $data[] = array(

                            'student_fk'=>$student_fk,

        'student_subject_name'=>$student_subject_name




        );

            }

        }

        $this->Model->insertt($data);

        echo 'Data Imported successfully';

        }   

    }




        Model
        --------------------------------------------------------------

          public function insertt($data) 

           {

        $this->db->insert_batch('student_result', $data);


          return;

         }
0 голосов
/ 23 мая 2018

Вы можете использовать счетчик в цикле foreach, например $ i = 1, и вставить его в массив, а затем в конце цикла foreach увеличить его на 1

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