首页  >  文章  >  后端开发  >  继续开发 OpenCart 产品 CSV 导入工具:第 2 部分

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

WBOY
WBOY原创
2023-08-31 20:53:05626浏览

在上一篇教程中,我们讨论了如何 实现一个导入工具,在其中我们创建了一个导入按钮及其前端模板。今天我们将学习如何将计算机中的批量数据直接导入到 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.phpadmin/model/catalog/product.php
  2. importCsvData($data)在其中创建一个名为
  3. importCsvData($data)
  4. 的公共函数。
在模型函数内,我们将添加此代码,其中包含一些用于保存数据的查询。

<?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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn