我有一个应用程序,我希望用户能够通过CSV上传联系人列表并将其保存到数据库中。我已尝试设置brad stinsons CSV codeigniter library,但到目前为止遇到了麻烦...当我点击上传时,CSV就会消失,无处可去,没有任何错误..
如果有人能告诉我我是在正确的轨道上还是完全关闭,我真的很感激。
这是我的Csv_import.php
控制器
public function load_data() {
$result = $this->csv_import_model->select();
$output = 'contacttable';
$count = 0;
if($result->num_rows() > 0)
{
foreach ($result->result() as $row)
{
$count = $count + 1;
$output .= '
<tr>
<td>'.$count.'</td>
<td>'.$row->fullname.'</td>
<td>'.$row->email'.</td>
<td>'.$row->country'.</td>
<td>'.$row->gender'.</td>
</tr>';
}
}
else {
$output .='<p>Data not available</p>';
}
$output .= '</table></div>';
echo $output;
}
public function import()
{
$file_data = $this->csvimport->get_array($_FILES["csv_file"]
["tmp_name"]);
foreach($file_data as $row)
{
$data[] = array (
'fullname' => $row["fullname"],
'email' => $row["email"],
'country' =>$row["country"],
'gender' =>$row["gender"]
);
}
$this->csv_import_model->insert($data);
}
我的Csv_Import_model.php
型号
class Csv_import_model extends CI_model
{
function select()
{
$this->db->order_by('idcontacts', 'DESC');
$query = $this->db->get('contacts');
return $query;
}
function insert($data)
{
$this->db->insert_batch('contacts', $data);
}
}
我在仪表板上的视图
<form method="post" id="import_csv" enctype="multipart/form-data">
<div class="form-group">
<label>Select CSV File</label>
<input type="file" name="csv_file" id="csv_file" required accept=".csv" />
</div>
<button type="submit" name="import_csv" class="btn btn-info"
id="import_csv_btn">Import CSV</button>
</form>
<br>
<div id="imported_csv_data"></div>
答案 0 :(得分:1)
如Github page of bradstinson/csv-import中所述:
CSV导入[DEPRECATED]
CSV导入是一个Codeigniter spark,可以很容易地将CSV文件导入关联数组。
注意:我在大约3年内没有使用此代码,也不再提供任何类型的支持。但是,您可以自担风险使用此代码。
因此,我强烈建议您不要在您的应用程序中使用已弃用的库。
请注意,您不必查找专用于CodeIgniter的CSV库。任何PHP库都可以在CI中加载。这最好通过Composer autoloading完成。
通过快速搜索,我可以推荐:
您是否知道PHP有its very own function (fgetcsv)来解析CSV文件?它有它的缺点(不尊重引用的字符串或多行CSV),但它可能适用于你的情况。
parsecsv/parsecsv-for-php,它实现RFC 4180(CSV标准)并且看起来很有效。它可以加载Composer。
以下是使用fgetcsv
的示例:
if (($handle = fopen("myfile.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// Process with $data
}
fclose($handle);
}
以下是使用parsecsv
的示例:
$csv = new ParseCsv\Csv();
$csv->delimiter = ",";
$csv->parse('my-file.csv');
foreach($csv->data as $row) {
// Process using $row
}
答案 1 :(得分:0)
我能够通过跟踪此link
中的git存储库来实现此目的