2023-08-31

继续开发 OpenCart 产品 CSV 导入工具:第 2 部分

在上一篇教程中,我们讨论了如何
实现一个导入工具,在其中我们创建了一个导入按钮及其前端模板。今天我们将学习如何将计算机中的批量数据直接导入到 OpenCart 系统中。

让我们首先考虑层次结构。在之前的教程中,我们实现了导出工具,它允许用户
下载 CSV 表格并根据需要进行替换。之后我们实施了
导入工具,允许用户上传/导入已编辑的文件/数据。
之前我们实现了布局。在这篇文章中,我们将
实现该功能。

1. 控制器文件

在上一个教程中,我们创建了一个控制器,它将我们推送到上传表单的布局。在布局的视图文件中,我们有一个上传输入,用户可以在其中上传 CSV,如下所示:

继续开发 OpenCart 产品 CSV 导入工具:第 2 部分

  1. 导航至 admin/controller/catalog/product.php
  2. 找到 importCSV() 函数,其中
    我们在上一个教程中创建了。

  3. 放置 if
    (($this->request->server['REQUEST_METHOD'] == 'POST') ) {}
    后面,以确保代码部分只有在提交上述表单的情况下才会被执行。
  4. 在上面的代码块中,我们将添加下面逐步解释的代码。

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. 模型文件

  1. 导航至
    admin/model/catalog/product.php
  2. 在其中创建一个名为 importCsvData($data) 的公共函数。
  3. 在模型函数内,我们将添加此代码,其中包含一些用于保存数据的查询。
<?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中文网其它相关文章!

https://www.php.cn/faq/600537.html

发表回复

Your email address will not be published. Required fields are marked *