Joomla 3.x Полезная функция дли разбора файла .csv

Тема в разделе "JoomShopping", создана пользователем OlegK, 25.12.2019.

  1. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Разбор файла .csv , где поля в первой строке будут ключами ассоциативного массива. Удобно потом использовать в файле импорта товаров JoomShopping https://www.php.net/array_combine
    Код (PHP):
    1. function csv_to_array($filename='', $delimiter=',') {
    2.   if(!file_exists($filename) || !is_readable($filename))
    3.   return FALSE;
    4.  
    5.   $header = NULL;
    6.   $data = array();
    7.   if (($handle = fopen($filename, 'r')) !== FALSE)
    8.   {
    9.   while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
    10.   {
    11.   if(!$header)
    12.   $header = $row;
    13.   else
    14.   $data[] = array_combine($header, $row);
    15.   }
    16.   fclose($handle);
    17.   }
    18.   return $data;
    19. }

    И потом по примеру стандартного скрипта
    Код (PHP):
    1. if ($upload->upload()){
    2.   $filename = $dir."/".$upload->getName();
    3.   @chmod($filename, 0777);
    4.   //  $csv = new csv();
    5.   //  $data = $csv->read($filename);
    6.   $start = microtime(true); // запуск время
    7.   $datas = $this->csv_to_array($filename, ';');

    Еще полезно добавить вывод времени выполнения импорта.
    Код (PHP):
    1. $mainframe->redirect("index.php?option=com_jshopping&controller=importexport&task=view&ie_id=".$ie_id, _JSHOP_COMPLETED.'<br />Время выполнения скрипта: '.round(microtime(true) - $start, 4).' сек.');

    Добавлю еще описание функционала импорта JoomShopping . Можно добавить свою кнопку и функцию, которую запустит клик по этой кнопке.
    В функцию view импорта
    Код (PHP):
    1. JToolBarHelper::spacer();
    2.  JToolBarHelper::custom("createtimg", 'save', 'icon over', 'Создание картинок к товарам', false);

    Клик по кнопке вызовет function createtimg() {}
    --- добавлено: 28.01.2020, первое сообщение размещено: 25.12.2019 ---
    Снимок экрана от 2020-01-28 10-42-38.png
     
  2.  

Поделиться этой страницей

Загрузка...