2014-02-08 2 views
0

codeigniter를 사용하여 mysql로 ​​csv를 가져오고 싶습니다. 이것은 내 소스 코드입니다.codeigniter를 사용하여 mysql에 csv 파일을 가져 오는 방법

보기

<?php $this->load->view("admin/v_header");?> 
<?php $this->load->view("admin/v_top_menu");?> 
<?php $this->load->view("admin/v_sidebar");?> 

<div class="content"> 
    <div class="header"> 
     <h1 class="page-title">Import Data Dosen</h1> 
    </div> 
    <?php $this->load->view("admin/v_alert_msg");?> 

    <form class="form-horizontal" action="<?php echo base_url();?>admin/save_dosen" method="POST" enctype="multipart/form-data"> 
     <fieldset> 
      <legend>Import Data Dosen</legend> 
      <div class="control-group"> 
       <label class="control-label"><b>Pilih File :</b></label> 
       <div class="controls"> 
        <div class="input-prepend"> 
         <span class="add-on"><i class="icon-barcode"></i></span> 
         <input type="file" name="csv_dosen" id="csv_dosen"/> 
        </div> 
       </div> 
      </div> 

      <div class="control-group"> 
       <div class="controls"> 
        <button type="submit" class="btn btn-primary"> 
         <i class="icon-ok icon-white"></i>Save 
        </button> 
       </div> 
      </div> 
     </fieldset> 
    </form> 
</div> 
<?php $this->load->view("admin/v_footer");?> 

라이브러리

<?php 

error_reporting(0); 

    class Csv_impot { 

     var $csvfile, $delimitatore, $nometable; 
     var $_FIELD; 

     function csv_import($cf = "", $del = "", $nt = "") { 
      $this->csvfile = $cf; 
      $this->delimitatore = $del; 
      $this->nometable = $nt; 
     } 

     function export() { 
      $csvhandle = file($this->csvfile); 
      $field = explode($this->delimitatore, $csvhandle[0]); 
      $kolom = ""; 
      foreach ($field as $array_kolom) { 
       $kolom.="`" . trim($array_kolom) . "`,"; 
      } 
      $kolom = trim(substr($kolom, 0, -1)); 
      //echo $kolom; 
      for ($i = 1; $i <= count($csvhandle); $i++) { 
       $valori = explode($this->delimitatore, $csvhandle[$i]); 
       $values = ""; 
       foreach ($valori as $val) { 
        $val = trim($val); 
        if (eregi("NULL", $val) == 0) 
         $values.="'" . addslashes($val) . "',"; 
        else 
         $values.="NULL,"; 
       } 
       $values = trim(substr($values, 0, -1)); 
       $query = "INSERT INTO " . $this->nometable . "(" . $kolom . ") values(" . trim($values) . ");"; 
       $QUERY[$i] = $query; 
      } 
      return $QUERY; 
     } 

    } 

제어기

function import_dosen() 
    { 
     $this->data['title']="Import Data Dosen"; 
     $this->load->view("admin/v_import_dosen", $this->data); 

    } 
    function save_dosen() 
    { 

     if(isset($_FILES['csv_dosen']['name'])) 
     { 
      $csv_dosen=$_FILES['csv_dosen']['name']; 
      $handle = fopen($csv_dosen,"r"); 
      $this->load->library('csv_import'); 
      $csv=new csv_import(".$handle.",",","dosen"); 
      $query=$csv->export(); 
      $this->m_dosen->eksekusi($query); 
//   $check_file= explode(".", $csv_dosen); 
//   if(strtolower($check_file[1])=="csv") 
//   { 
//    $csv_dosen=$_FILES['csv_dosen']['temp_name']; 
//    $handle = fopen($csv_dosen,"r"); 
//    while (($data = fgetcsv($handle, 1000,",")) !== FALSE) 
//    { 
//     echo "haha"; 
//    } 
//   } 
//   else{echo "bukan file csv";} 
      //$handle = fopen($csv_dosen,"r"); 
      //$csv_dosen_type=$_FILES['csv_dosen']['type']; 
      //$csv_dosen_size=$_FILES['csv_dosen']['size']; 
     } 
     //echo $handle; 
    } 

모델

<?php 
class M_dosen extends CI_model 
{ 
    function __contruct() 
    { 
     parent::__construct(); 
    } 

    function eksekusi($query) 
    { 
    //echo "<br/>"; 
    //echo count($query); 
     for($i=1;$i<count($query);$i++) 
     { 
      $this->db->query($query[$i]); 
      //echo $query[$i]; 
      //echo "<br/>" 
     } 
    } 
} 
?> 

이 코드를 실행하면 [function.fopen] : 스트림을 열지 못했습니다. 해당 파일이나 디렉토리가 없습니다. 어떻게이 약속을 해결 했습니까? 이 문제를 해결하는 데 도움이되기를 바랍니다. 감사합니다. .

+0

무엇이 "$ handle."'? –

+0

$ handle은 내 디렉토리에서 csv 파일의 위치를 ​​잡는 변수입니다. –

+0

'에 대한 필요성. 여기에? –

답변

1

라이브러리에 따라 파일 이름을 Csv_impot 생성자에 전달해야합니다. 하지만 파일 처리기를 전달하고 있습니다.

다음과 같이 코드를 변경하십시오.

//general oops method: 
$csv=new csv_import($csv_dosen,",","dosen"); 

//In CI, 
$this->load->library('csv_import',array($csv_dosen,",","dosen")); // no need to create object again. Array of values will be parameter for constructor. 
+0

존재하지 않는 클래스 : Csv_import –

+0

업데이트 된 응답 확인 오류가 표시됩니다. –

관련 문제