Codeigniter REST CSV import into mysql

I want to publish a csv file to my controller using the API. I am using the Codeigniter REST library from phil sturgeon. How to implement client side CSV import to my REST server. I just want to ask because I cannot find documentation about this.

+5
source share
1 answer

Here is an easy way to do this. I don’t know what people do, but I use it

This is my csv reader library, save it in the libraries folder as csvreader.php.

<?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; } } ?> 

And the controller method

 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); } 

And this view

 <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> 

Note. This will only read the file that exists on the server. If the file needs to be uploaded, use the File Upload Class to upload the file and save it to some place on your server, then specify the path to the local file in the parse_file method, and everything will work fine.

+27
source

All Articles