Meneruskan pembangunan Alat Import CSV Produk OpenCart: Bahagian 2

WBOY
Lepaskan: 2023-08-31 20:54:02
asal
671 orang telah melayarinya

Dalam tutorial sebelum ini, kita telah membincangkan bagaimana Laksanakan alat import di mana kami mencipta butang import dan templat bahagian hadapannya. Hari ini kita akan belajar cara mengimport data kelompok daripada komputer anda terus ke dalam sistem OpenCart.

Mari kita pertimbangkan hierarki dahulu. Dalam tutorial sebelumnya, kami melaksanakan alat eksport, yang membolehkan pengguna Muat turun jadual CSV dan gantikan mengikut keperluan. Selepas itu kita laksanakan Alat import yang membolehkan pengguna memuat naik/mengimport fail/data yang diedit. Sebelum ini kami melaksanakan susun atur. Dalam artikel ini kita akan Laksanakan fungsi ini.

1. Fail pengawal

Dalam tutorial sebelumnya, kami mencipta pengawal yang mendorong kami ke susun atur borang muat naik. Dalam fail paparan susun atur kami mempunyai input muat naik di mana pengguna boleh memuat naik CSV seperti ini:

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

  1. Navigasi ke admin/controller/catalog/product.php. 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");
?>
Salin selepas log masuk

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
    }
}
?>
Salin selepas log masuk

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	
?>
Salin selepas log masuk

到目前为止,我们已经 创建了一个仅上传 CSV、逐行读取其数据并将其解析到模型的函数。现在我们需要创建一个控制器代码中定义的模型,该模型负责将解析后的数据保存到数据库中。

2. 模型文件

  1. 导航至 admin/model/catalog/product.php
  2. 在其中创建一个名为 importCsvData($data)
  3. Cari fungsi importCSV(), di mana Kami menciptanya dalam tutorial sebelumnya.

Letak if (($this->request->server['REQUEST_METHOD'] == 'POST') ) {} untuk memastikan bahagian kod hanya akan dilaksanakan apabila borang di atas diserahkan.

Dalam blok kod di atas, kami akan menambah kod yang dijelaskan langkah demi langkah di bawah.

1.1 Dapatkan fail

Kod berikut membuka fail CSV yang diserahkan dan memprosesnya sebagai fail baca sahaja.
<?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
    }
}		

?>
Salin selepas log masuk

1.2 Lintas setiap rekod

Sekarang, kami perlu mengulangi setiap baris CSV dan menyimpannya ke pangkalan data kami. Dalam hal ini, kami akan menggelungkan rekod dan menyimpannya dengan sewajarnya. 🎜 rrreee

1.3 Ubah hala

🎜Selepas import selesai, pengguna mesti diubah hala, jadi kod berikut akan mengubah hala pengguna ke borang dan memberikan mesej kejayaan. 🎜 rrreee 🎜Setakat ini kami ada Mencipta fungsi yang hanya memuat naik CSV, membaca data baris demi baris dan menghuraikannya ke dalam model. Sekarang kita perlu mencipta model yang ditakrifkan dalam kod pengawal yang bertanggungjawab untuk menyimpan data yang dihuraikan ke dalam pangkalan data. 🎜 🎜 🎜2.🎜 Fail model🎜 🎜 🎜Navigasi ke admin/model/catalog/product.php. 🎜 🎜Buat fungsi awam bernama importCsvData($data) di dalamnya. 🎜 🎜 Di dalam fungsi model kami akan menambah kod ini dengan beberapa pertanyaan untuk menyimpan data. 🎜 🎜 rrreee 🎜Kesimpulan🎜 🎜Jadi, tutorial hari ini adalah mengenai Menyediakan penyelesaian lengkap untuk sistem import dan eksport. Kami menyediakan penyelesaian sedemikian dalam Pengguna yang boleh mengedit/mengemas kini data mereka. Penyelesaian ini sangat mudah digunakan dan Juga dilaksanakan. Saya mengharapkan maklum balas anda. Sila tinggalkan komen atau soalan di bawah. Terima kasih! 🎜🎜🎜🎜🎜

Atas ialah kandungan terperinci Meneruskan pembangunan Alat Import CSV Produk OpenCart: Bahagian 2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan