Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Codeigniter REST CSV import to mysql

I want to post csv file on my controller using API.I'm using Codeigniter REST Library by phil sturgeon. How to implement on the client side the importing of CSV to my REST Server.I just want to ask because I can't find any documentation about it.

like image 663
program taylor Avatar asked Jul 05 '12 02:07

program taylor


People also ask

How to read CSV file in Codeigniter?

CSVReader.php Using this CSVReader class, you can import data from the CSV file in CodeIgniter. parse_csv() – Parses a CSV file and returns data as an array. Open the CSV file in read-only mode using PHP fopen() function. Parse data from the opened CSV file using PHP fgetcsv() function.

How do I import a CSV file into ci3?

Controller php in application/controllers/ directory. __construct() – Load url helper and Main_model model. index() – On submit, button click check the file selected or not. If selected then set upload preference and load upload library.


1 Answers

Here is an easy way to do this. I don't know what people do but i use this

This is my csv reader library, Save this in 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 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 is 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 a file which exists on server. If the file is needed to be uploaded use File Upload Class to upload file and save it to some location on your server then give the path of located file in parse_file method. And everything will work fine.

like image 62
Muhammad Raheel Avatar answered Oct 05 '22 02:10

Muhammad Raheel