2017-08-01 189 views
0

控制器:partner.php如何使用codeigniter將csv文件數據導入到mysql數據庫中?

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 
class Partner extends CI_Controller 
{ 
    function __construct() 
    { 
     parent :: __construct(); 
     $this->load->helper(array('form', 'url', 'captcha', 'email')); 
    } 

    public function student() 
    { 
     if($this->input->post('save')) 
     { 
      $client_id[0]['client_id'] = $this->session->userdata('client_id'); 
      $radio = $this->input->post('class'); 
      $client = $client_id[0]['client_id']; 


      $filename = $_FILES['students_list']['name']; 

      $path = FCPATH."resources/imported_file/".$filename; 
      $move=move_uploaded_file($_FILES['students_list']['tmp_name'],$path.$_FILES['students_list']['name']); 
      if($_FILES["students_list"]["size"] > 0) 
      { 
       $file = fopen($path, "r"); 
       while (($importdata = fgetcsv($file))) 
       { 
        $data = array(
         'firstname' => $importdata[0], 
         'email' =>$importdata[1], 
         'phone' =>$importdata[2], 
         'uploaded_date' => date('d-m-y'), 
         'twelfth_year' => date('Y'), 
         'client' => $client[0]['client_id'], 
         'class' => $radio 
        ); 
        $this->db->insert('students',$data); 
       }      
       fclose($file); 
       $this->session->set_flashdata('err_csv', '<p style="color: #87b87f;font-weight: bold;text-align:center;">Data are imported successfully..</p>'); 
      } 
      else 
      { 
       $this->session->set_flashdata('err_csv', '<p style="color: red;font-weight: bold;text-align:center;">Something went wrong..</p>'); 
      } 
     } 
    } 

觀點:

<form method="post" enctype="multipart/form-data"> 
    <input type="file" id="students_list" name="students_list" accept=".csv" class="required"> 
    <input type="submit" name="save" id="save" value="save" class="btn btn-info" /> 
</form> 

我有一個CSV文件,我想csv文件數據導入MySQL數據庫。但是當我上傳csv文件並點擊提交時,它會生成圖像中顯示的錯誤。

enter image description here

那麼,如何刪除這個錯誤?請幫幫我。

謝謝

+0

可能重複的https://stackoverflow.com/questions/31959422/warning-fgetcsv-expects-parameter-1-to-be-resource-boolean -given-in-c – Virb

+0

使用此CSV解析庫。 https://github.com/parsecsv/parsecsv-for-php –

回答

0

你應該使用CodeIgniter的文件上傳庫上傳文件,然後使用phpexcel庫導入CSV文件。

+1

請在評論中提到這一點。 – Virb

+0

您應該使用codeigniter文件上傳庫進行上傳文件,然後使用phpexcel庫導入csv文件。 –

+0

@marmikpatel:Virb試圖告訴你,如果你在一行中有解決方案並且沒有代碼演示,那麼請在評論中提及它,而不是提及作爲答案。所以你必須在這個問題下發表評論,而不是根據你自己的回答。 – kishor10d

0

試試這個代碼,你可以使用CodeIgniter的上傳庫上傳文件,$ worksheet是一個數組,你所有的數據存儲在該數組中,只是打印工作表。

class Excelreader_controller extends CI_Controller 
{ 

    function __construct() 
    { 
     parent::__construct(); 
     $this->load->library('upload'); 
    } 

    function uploadFile() 
    { 
     $config['upload_path'] = './upload/'; 
     $config['allowed_types'] = 'xls|csv';  

     $this->upload->initialize($config); 
     if($this->upload->do_upload('uploadfile')) 
     { 
      $target_path = "upload/" . basename($_FILES["uploadfile"]["name"]); 
      if(move_uploaded_file($_FILES["uploadfile"]["tmp_name"], $target_path)) { 
       $file=$_FILES["uploadfile"]["name"]; 
       $csv_file="upload/".$file; 
       $worksheet=array(); 
       if (($getfile = fopen($csv_file, "r")) !== FALSE) 
       { 
        $worksheet[] = fgetcsv($getfile, 1000, ","); 
        while (($data = fgetcsv($getfile, 1000, ",")) !== FALSE) 
        { 
         $worksheet[]=$data; 

        } 
       } 

      } 
      else 
      { 
       echo "not uploaded"; 
      } 
     } 
     else 
      echo $this->upload->display_errors(); 

    } 
} 
0
<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 
class Partner extends CI_Controller 
{ 
function __construct() 
{ 
    parent :: __construct(); 
    $this->load->helper(array('form', 'url', 'captcha', 'email')); 
    $this->load->library('upload'); 
    $this->load->database(); 
    $this->load->helper('file'); 
} 

public function student() 
{ 
    if(isset($_POST["submit"])) 
    { 

if($_FILES['file']['name']) 
           { 
            $filename = explode(".", $_FILES['students_list']['name']); 

     if($filename[1] == 'csv') 
            { 

             $fp = fopen($_FILES['file']['tmp_name'],'r') or die("can't open file"); 

             while($data = fgetcsv($fp,1024)) 
             { 
              for ($i = 0, $j = count($data); $i < $j; $i++) 
              { $item['firstname']=$data[0]; 
               $item['email'] = $data[1]; 
               $item['phone'] = $data[2]; 

               $item['uploaded_date'] = $data[3]; 
               $item['twelfth_year'] = $data[4]; 
               $item['client'] = $data[5]; 
               $item['class'] = $data[6]; 
              } 
             $data = array('firstname' => $item['firstname'], 
               'email' => $item['email'], 
                 'phone' => $item['phone'], 
                 'uploaded_date' => $item['uploaded_date'], 
                 'twelfth_year' => $item['twelfth_year'] , 
                 'client' => $item['client'] , 
                 'class' => $item['class'], 

             $data['crane_features']=$this->db->insert('students',$data); 

             } 

            echo "<script type='text/javascript'>alert('FILE UPLOADED SUCCESSFULLY')</script>"; 
            fclose($fp) or die("can't close file"); 
            $data['success']="success"; 
            return $data; 


            } 
            } 

            else{ 
              echo "<script type='text/javascript'>alert('TRY UPLOADING *.csv FILE')</script>"; 
              $this->load->view('uploadcssview'); 
             } 
           } 

         } 
        } 

視圖文件

 <form action = "<?php echo site_url('Partner/student'); ?>" 
     method="post" enctype="multipart/form-data" > 
      <center> 
     <label>SELECT A CSV File:</label></center> 

     <div class="form-group"> 
     <div class="col-md-3"></div> 
     <div class="col-md-4"><br/> 
     <input type="file" name="file" id="file" /> 
     </div> 
     <br/> 
     </form> 

      <div class="col-md-1"> 
      <input type="submit" name="submit" value="Import" class="btn btn- 
     info" /> 
      </div> 
相關問題