繼續開發 OpenCart 產品 CSV 導入工具:第 2 部分

WBOY
發布: 2023-08-31 20:54:02
原創
671 人瀏覽過

在上一篇教學中,我們討論如何 實作一個導入工具,在其中我們建立了一個導入按鈕及其前端模板。今天我們將學習如何將電腦中的大量資料直接匯入到 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板