2012-07-05 7 views
5

Ich mag csv-Datei auf meinem Controller schreiben API.I'm mit mit Codeigniter REST-Bibliothek von phil Stör. So implementieren Sie auf der Clientseite das Importieren von CSV in meinen REST-Server. Ich möchte nur fragen, weil ich keine Dokumentation darüber finden kann.Codeigniter REST CSV-Import zu mysql

+0

Sie sind nicht genug, um sich mit der Frage klar. Codeigniter REST ist fast gleich wie normaler Codeigniter, aber der Unterschied besteht darin, nur die Methode und die Antwort aufzurufen. Im normalen codeigniter rufen wir 'Controller/function' wo in REST muss es' Ressource/{RESOURCE_ID}/child_resource/{} 'child_resource_id sein. Ich denke nicht, dass es ein Problem für das Senden der Header als '.xls' Datei – KuKu

+0

Clealy geben und in einfachen Worten sagen Sie uns, was Sie wollen –

+0

@raheelshan Ich möchte csv-Datei auf meinem Controller mit clientseitige API von jquery.post und entpacken Sie die CSV-Datei Daten und importieren Sie in MySQL. –

Antwort

27

Hier ist eine einfache Möglichkeit, dies zu tun. Ich weiß nicht, was die Leute tun, aber ich benutze diese

Dies ist mein csv Leser Bibliothek, diesen Ordner als csvreader.php in Bibliotheken speichern.

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

class CSVReader { 

    var $fields;   /** columns names retrieved after parsing */ 
    var $separator = ';'; /** separator used to explode each line */ 
    var $enclosure = '"'; /** enclosure used to decorate each field */ 

    var $max_row_size = 4096; /** maximum row size to be used for decoding */ 

    function parse_file($p_Filepath) 
    { 
     $file   = fopen($p_Filepath, 'r'); 
     $this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure); 
     $keys_values  = explode(',',$this->fields[0]); 

     $content   = array(); 
     $keys   = $this->escape_string($keys_values); 

     $i = 1; 
     while(($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false) 
     { 
      if($row != null) { // skip empty lines 
       $values   = explode(',',$row[0]); 
       if(count($keys) == count($values)){ 
        $arr   = array(); 
        $new_values = array(); 
        $new_values = $this->escape_string($values); 
        for($j=0;$j<count($keys);$j++){ 
         if($keys[$j] != ""){ 
          $arr[$keys[$j]] = $new_values[$j]; 
         } 
        } 
        $content[$i] = $arr; 
        $i++; 
       } 
      } 
     } 
     fclose($file); 
     return $content; 
    } 

    function escape_string($data) 
    { 
     $result = array(); 
     foreach($data as $row){ 
      $result[] = str_replace('"', '',$row); 
     } 
     return $result; 
    } 
} 
?> 

und Controller-Methode

function readExcel() 
{ 
     $this->load->library('csvreader'); 
     $result = $this->csvreader->parse_file('Test.csv');//path to csv file 

     $data['csvData'] = $result; 
     $this->load->view('view_csv', $data); 
} 

Und dies ist eine Ansicht

<table cellpadding="0" cellspacing="0" width="100%"> 
    <tr> 
      <td width = "10%">ID</td> 
      <td width = "20%">NAME</td> 
      <td width = "20%">SHORT DESCRIPTION</td> 
      <td width = "30%">LONG DESCRIPTION</td> 
      <td width = "10%">STATUS</td> 
      <td width = "10%">PARENTID</td> 
    </tr> 

      <?php foreach($csvData as $field){?> 
       <tr> 
        <td><?php echo $field['id']?></td> 
        <td><?php echo $field['name']?></td> 
        <td><?php echo $field['shortdesc']?></td> 
        <td><?php echo $field['longdesc']?></td> 
        <td><?php echo $field['status']?></td> 
        <td><?php echo $field['parentid']?></td> 
       </tr> 
      <?php }?> 
</table> 

Hinweis: Dies ist nur eine Datei lesen, die auf dem Server vorhanden ist. Wenn die Datei hochgeladen werden muss, verwenden Sie File Upload Class, um die Datei hochzuladen und sie an einem bestimmten Ort auf Ihrem Server zu speichern. Geben Sie dann den Pfad der gefundenen Datei in der Methode parse_file ein. Und alles wird gut funktionieren.

+0

Danke, ich werde es versuchen Ich brauche nur die Daten zu extrahieren und es an das Modell zu übergeben. –

+0

Sie können das zurückgegebene Array übergeben zu –

+0

modellieren, wie wenn meine csv Felder ohne $ Kapselung ‚"‘es Fehler zurück, wenn $ i Gehäuse setzen =‚‘; –