这里我有一个包含大量联系人行的csv文件,这些行保存到我的数据库表中。现在我只想检查客户上传的csv中的空行。
以下是包含一些空行的示例csv
在上面的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);
}
我只想得到一点帮助。我们的努力将不胜感谢谢谢:)。
答案 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;