在上一篇教程中,我们讨论了如何
实现一个导入工具,在其中我们创建了一个导入按钮及其前端模板。今天我们将学习如何将计算机中的批量数据直接导入到 OpenCart 系统中。
让我们首先考虑层次结构。在之前的教程中,我们实现了导出工具,它允许用户
下载 CSV 表格并根据需要进行替换。之后我们实施了
导入工具,允许用户上传/导入已编辑的文件/数据。
之前我们实现了布局。在这篇文章中,我们将
实现该功能。
1. 控制器文件
在上一个教程中,我们创建了一个控制器,它将我们推送到上传表单的布局。在布局的视图文件中,我们有一个上传输入,用户可以在其中上传 CSV,如下所示:
- 导航至
admin/controller/catalog/product.php
。 - 找到
importCSV()
函数,其中
我们在上一个教程中创建了。 - 放置
if
后面,以确保代码部分只有在提交上述表单的情况下才会被执行。
(($this->request->server['REQUEST_METHOD'] == 'POST') ) {} - 在上面的代码块中,我们将添加下面逐步解释的代码。
1.1 获取文件
以下代码打开提交的 CSV 文件并将其作为只读文件处理。
<?php $file = $_FILES['csv']['tmp_name']; $handle = fopen($file,"r"); ?>
登录后复制
1.2 遍历每条记录
现在我们需要遍历 CSV 的每一行并将其保存到我们的数据库中。在这方面,我们将循环记录并相应地保存它们。
<?php while ($data = fgetcsv($handle,1000,",","'")) // parses the line it reads for fields in CSV format and returns an array containing the fields read. { if ($data[0]!='') // if column 1 is not empty { $this->model_catalog_product->importCsvData($data); // parse the data to model } else { // in case of errors, put debug code here } } ?>
登录后复制
1.3 重定向
导入完成后,必须重定向用户,因此以下代码将用户重定向到表单并给出成功消息。
<?php $this->session->data['success'] = 'CSV Successfully Imported!'; //success message $this->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL')); //redirected to the product page ?>
登录后复制
到目前为止,我们已经
创建了一个仅上传 CSV、逐行读取其数据并将其解析到模型的函数。现在我们需要创建一个控制器代码中定义的模型,该模型负责将解析后的数据保存到数据库中。
2. 模型文件
- 导航至
admin/model/catalog/product.php
。 - 在其中创建一个名为
importCsvData($data)
的公共函数。 - 在模型函数内,我们将添加此代码,其中包含一些用于保存数据的查询。
<?php $product_id = $data[0]; $model = $data[1]; $name = $data[2]; $quantity = $data[3]; if($product_id!='') { $query = $this->db->query("UPDATE `".DB_PREFIX."product` SET model='".$model."',quantity='".(int)$quantity."' WHERE product_id='".$product_id."'");//updating product quantity & its model if($name) { $query = $this->db->query("UPDATE `".DB_PREFIX."product_description` SET name='".$this->db->escape($name)."' WHERE product_id='".$product_id."'"); // update the name of the product } } ?>
登录后复制
结论
所以,今天的教程就是关于
为进出口系统提供完整的解决方案。我们提供这样的解决方案,在
哪些用户可以编辑/更新他们的数据。该解决方案非常易于使用并且
也实施。我期待您的反馈。请随时在下面留下评论或疑问。谢谢!
以上就是继续开发 OpenCart 产品 CSV 导入工具:第 2 部分的详细内容,更多请关注php中文网其它相关文章!