помогите решить проблему с Импорт товаров из CSV (Excel / 1С)

Статус
В этой теме нельзя размещать новые ответы.
А если ничего не допомагает используйте "альтенативную" функцию:


PHP:
function fgetcsv2($f_handle, $length, $delimiter=',', $enclosure='"')
{
    if (!strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
        return fgetcsv($f_handle, $length, $delimiter, $enclosure);
    if (!$f_handle || feof($f_handle))
        return false;

    if (strlen($delimiter) > 1)
        $delimiter = substr($delimiter, 0, 1);
    elseif (!strlen($delimiter))          // There _MUST_ be a delimiter
        return false;

    if (strlen($enclosure) > 1)         // There _MAY_ be an enclosure
        $enclosure = substr($enclosure, 0, 1);

    $line = fgets($f_handle, $length);
    if (!$line)
        return false;
    $result = array();
    $csv_fields = explode($delimiter, trim($line));
    $csv_field_count = count($csv_fields);
    $encl_len = strlen($enclosure);
    for ($i=0; $i<$csv_field_count; $i++)
    {
        // Removing possible enclosures
        if ($encl_len && $csv_fields[$i]{0} == $enclosure)
            $csv_fields[$i] = substr($csv_fields[$i], 1);
        if ($encl_len && $csv_fields[$i]{strlen($csv_fields[$i])-1} == $enclosure)
            $csv_fields[$i] = substr($csv_fields[$i], 0, strlen($csv_fields[$i])-1);
        // Double enclosures are just original symbols
        $csv_fields[$i] = str_replace($enclosure.$enclosure, $enclosure, $csv_fields[$i]);
        $result[] = $csv_fields[$i];
    }
    return $result;
}

замисть myfgetcsv... Источник:
А еще лучще сразу импорт из файла .xls. Благо бесплатных библиотек немало...
 
у меня когда глюки с импортом бывают, я открываю свой csv, и удаляю как можно больше столбцов (те которые пустые) после необходимых мне. При импорте если я выберу разделители не ; а , мне в артикуле показывает строку, где кроме необходимых мне столбцов еще куча ; стоит. Я поэтому и начал прибивать все остальные столбцы, пока помогает
 
с предыдущей проблемой разобрался всё работало как надо до определённого момента. собственно когда залил картинки на сервер и прописал их названия в csv, то при импорте всё вроде прокатывает но с глюком, рандомным образом товар выскакивает из своей категории и сам становится категорией... может это из-за названия картинок? точнее из-за количества знаков в названии
 
Старюсь в качестве разделителя юзать табуляцию. Пока, тьфу-тьфу, глюков не было, может - просто везет.
 
а спомощью какого компоненнта выгружаешь?
 
  • Заблокирован
  • #16
csv импорт

У меня проблемка с импортом товара из csv на masterhost'e. В общем если в файле больше 1000 позиций выдает 502 ошибку... Помогите разобраться. Мб кто лодер с процентом загрузки написал?
 
У меня проблемка с импортом товара из csv на masterhost'e. В общем если в файле больше 1000 позиций выдает 502 ошибку... Помогите разобраться. Мб кто лодер с процентом загрузки написал?
вообще, 502-ая ошибка возникает, когда сервер, на котором находится сайт, по какой либо причине приостанавливает свое функционирование.
Если видите у себя такую ошибку, обращайтесь к хостинг провайдеру, вам разьяснят почему сайт может быть недоступен в даный момент.
если опустить наличие 502 ошибки, то часто проблема с импортом возможна из-за следующего:
1. проблема с настройками php (лимит по времени работы скрипта, лимит по размеру загружаемого файла)
2. проблема с mysql (установлен маленький размер для временного файла)
 
Переехал на новый хостинг - поимел проблему ТС. Но кроме описанного ТС, у меня еще обрезало дробную часть цены. Т.е., например, цена в csv 11.92, после импорта получал 11.00.
Помогло:
В файле core_functions/catalog_import_functions.php нужно найти строку function myfgetcsv($fname, $del)
и после скобки { добавить строки:
setlocale(LC_CTYPE, 'ru_RU');
setlocale(LC_COLLATE, 'ru_RU');
Именно обе строки.

J, этом ты мог прочитать и тут на форуме... это уже давно решено.... и выложено.... то что ты написал...
 
вот что они мне написали на мой вопрос. который написан выше... :
В файле core_functions/catalog_import_functions.php нужно найти строку
function myfgetcsv($fname, $del)
и после скобки { добавить строку:
setlocale(LC_ALL, 'ru_RU');
Если не поможет, вместо этого нужно вставить
setlocale(LC_ALL, 'ru_RU.cp1251');
ЛИБО setlocale(LC_CTYPE, 'ru_RU.cp1251'); Если и это не поможет, то нужно 2 строки:
setlocale(LC_CTYPE, 'ru_RU');
setlocale(LC_COLLATE, 'ru_RU');
Благодарю!
Все работает. Переехали на выделенный сервер и пропала возможность импорта товаров из csv. Поправил catalog_import_functions.php и все заработало.
 
Различия в версиях ПХП, та и от хостера зависит.
Чуть выше было приведено решение для изменения одного файла, в моем же варианте изменения в 2-х файлах...
Мне помогло такое решение:
В файле core_functions/catalog_import_functions.php нужно найти строку function myfgetcsv($fname, $del)
и после скобки { добавить строки:
PHP:
setlocale(LC_CTYPE, 'ru_RU');
setlocale(LC_COLLATE, 'ru_RU');
файл /cfg/connect.inc.php и перед закрывающим тэгом (в конце)
PHP:
?>
добавить следующую строку:
PHP:
setlocale(LC_CTYPE, 'ru_RU.cp1251');
И всё стало на свои места. Удачи! >_<
 
  • Нравится
Реакции: Artu
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху