Создание в OpenCart инструмента импорта товаров из CSV — Часть 2

Создание в OpenCart инструмента экспорта товаров в CSV

От автора: эта статья является частью серии под названием «Создание в OpenCart инструмента импорта товаров из CSV». В предыдущей статье мы рассмотрели, как реализовать инструмент импорта, в котором мы создали кнопку импорта и задали внешний шаблон. Сегодня мы узнаем, как напрямую пакетно импортировать данные с компьютера в OpenCart.

Рассмотрим сначала сначала все в целом. В предыдущем руководстве мы реализовали инструмент экспорта, который позволяет пользователю скачивать CSV-списки и изменять их при необходимости. После этого мы создали инструмент импорта, который позволяет загружать / импортировать отредактированный файл / данные. В первой части мы реализовали макет того, как работает в OpenCart импорт. В этой части мы реализуем функционал.

Файл контроллера

В предыдущей части мы создали контроллер, что привело нас к созданию формы загрузки. В файле представления макета у нас было поле загрузки, через которое пользователь может загрузить CSV, как показано ниже:

Откройте файл admin/controller/catalog/product.php. Найдите функцию importCSV(), которую мы создали в предыдущей части.
Добавьте после нее код:

Интернет-магазин на OpenCart!

Создайте интернет-магазин на самой популярной CMS – OpenCart с нуля!

Приступить к созданию
if (($this->request->server['REQUEST_METHOD'] == 'POST') ) {}

чтобы данная часть кода выполнялась только в том случае, если через указанную выше форму были отправлены данные.
Внутри вышеуказанного блока кода мы добавим код, который я подробно поясню ниже.

Получение файла

Следующий код открывает представленный CSV-файл и обрабатывает его как файл только для чтения.

<?php
$file = $_FILES['csv']['tmp_name'];
$handle = fopen($file,"r");
?>

Обработка каждой записи

Теперь нам нужно обработать каждую строку CSV и сохранить в базе данных. Для этого мы будем обрабатывать записи через цикл и сохранять их.

<?php
while ($data = fgetcsv($handle,1000,",","'")) // обработка строки заключается в считывании полей в формате CSV и возвращении массива, содержащего считанные поля.
{
 if ($data[0]!='') // если столбец 1 не является пустым
 {
 $this->model_catalog_product->importCsvData($data);  // обработка и передача данных в модель
 }
 else
 {
 // на случай возникновения ошибок сюда помещается код отладки
 }
}
?>

Перенаправление

После завершения импорта пользователь должен быть перенаправлен, поэтому следующий код перенаправляет пользователя к форме и отображает сообщение об успешном завершении процесса импорта.

<?php
$this->session->data['success'] = 'CSV Successfully Imported!'; // сообщение об успешном завершении процесса импорта
$this->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL')); //перенаправление на страницу товара 
?>

На данный момент мы создали функцию, которая только загружает CSV-файл, считывает его данные по строкам и передает их в модель. Теперь нам нужно создать модель, определенную в коде контроллера, которая отвечает за сохранение переданных данных в базу данных.

Файл модели

Откройте файл 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."'");//обновление количества и марки товара
 if($name)
 {
 $query = $this->db->query("UPDATE `".DB_PREFIX."product_description` SET name='".$this->db->escape($name)."' WHERE product_id='".$product_id."'"); // обновление названия товара
 }
} 
 
?>

Заключение

Итак, в этой статье мы предоставили полное решение системы экспорта / импорта. С помощью этого инструмента пользователи могут редактировать / обновлять свои данные. Это решение очень просто для использования и реализации. Я с нетерпением жду ваших отзывов. Вы можете оставить свои комментарии или вопросы ниже. Спасибо за внимание!

Автор: Zaman Riaz

Источник: http://code.tutsplus.com/

Редакция: Команда webformyself.

Интернет-магазин на OpenCart!

Создайте интернет-магазин на самой популярной CMS – OpenCart с нуля!

Приступить к созданию
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

OpenCart: быстрый старт, первые результаты

Создайте свой первый интернет-магазин на OpenCart с полного нуля!

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree