Codeigniter REST CSV import to mysql

前端 未结 1 1153
梦谈多话
梦谈多话 2020-11-28 07:47

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

相关标签:
1条回答
  • 2020-11-28 08:19

    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.

    0 讨论(0)
提交回复
热议问题