在上一教程中,我們讨論了如何實作導入工具,在其中建立了導入按鈕及其前端模闆。 今天,我們将學習如何将大量資料從計算機直接導入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的函數,逐行讀取其資料并将其解析到模型中。 現在,我們需要建立一個在控制器代碼中定義的模型,該模型負責将解析的資料儲存到db中。
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
}
}
?>
結論
是以,今天的教程都是關于為Export / Import系統提供完整的解決方案。 我們提供了這樣一種解決方案,使用者可以在其中編輯/更新其資料。 該解決方案也非常易于使用和實施。 期待您的回報。 随時在下面發表評論或查詢。 謝謝!
翻譯自: https://code.tutsplus.com/tutorials/building-a-product-csv-import-tool-in-opencart-part-2--cms-24503