天天看點

在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的函數,逐行讀取其資料并将其解析到模型中。 現在,我們需要建立一個在控制器代碼中定義的模型,該模型負責将解析的資料儲存到db中。

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
    }
}		

?>
           

結論

是以,今天的教程都是關于為Export / Import系統提供完整的解決方案。 我們提供了這樣一種解決方案,使用者可以在其中編輯/更新其資料。 該解決方案也非常易于使用和實施。 期待您的回報。 随時在下面發表評論或查詢。 謝謝!

翻譯自: https://code.tutsplus.com/tutorials/building-a-product-csv-import-tool-in-opencart-part-2--cms-24503