如何检查上传的csv

时间:2017-06-17 05:07:42

标签: php codeigniter csv

这里我有一个包含大量联系人行的csv文件,这些行保存到我的数据库表中。现在我只想检查客户上传的csv中的空行。

以下是包含一些空行的示例csv

enter image description here

在上面的csv中,第3行和第6行是空的。所以想检查这些空行号并丢弃错误的csv。

这是我的csv代码

$filename = $_FILES["csv_file"]["tmp_name"];
            if ($_FILES["csv_file"]["size"] > 0) {
                $file       = fopen($filename, "r");
                $importdata = fgetcsv($file, 10000, ",");
                $counter    = 1;
                while (!feof($file)) {
                    if ($counter > 1) {
                        $alldata[] = fgetcsv($file);
                    }
                    $counter++;
                }
                fclose($file);
                $csvfieldcounter = 1;
                foreach ($alldata as $importdata) {
                    $userdata = $this->session->userdata();
                    $userId   = $userdata['id'];
                    $status   = 'Y';
                    if ($importdata[4] == 'Disable' || $importdata[4] == 'disable')
                        $status = 'N';
                    else if ($importdata[4] == 'Enable' || $importdata[4] == 'enable')
                        $status = 'Y';
                    $data = array(
                        'customer_name' => $importdata[0],
                        'customer_email' => $importdata[1],
                        'customer_mobile' => $importdata[2],
                        'birth_date' => $importdata[3],
                        'status' => $status,
                        'user_id' => $userId,
                        'cat_type' => $file_cat
                    );
                    if ($importdata[2]) {
                        $run = $this->db->insert('customer', $data);
                        $csvfieldcounter++;
                        $id = $this->db->insert_id();
                    }
                }
                $this->session->set_flashdata('csv_imported','Your CSV have been successfully imported.');
                redirect('/customer', $csvfieldcounter);
            }

我只想得到一点帮助。我们的努力将不胜感谢谢谢:)。

1 个答案:

答案 0 :(得分:0)

我建议你使用下面提到的库。这将有助于您解决上述问题,同时也会减少控制器中的代码行。

https://github.com/parsecsv/parsecsv-for-php

这会对你有帮助。

如果您担心如何使用,请检查下面提到的代码。

$this->load->library('Parsecsv');
$csv = new Parsecsv($file);
$users = $csv->data;
$noOfUsers = count($users);
foreach($users as $user):
   if(!empty($user)):

      // Write your code

   endif;
endforeach;