1

Тема: [решено] Импорт товаров

Здравствуйте. Мне нужно создать в пункте импорт еще один параметр это дата создания товара. То есть выбрал колонки по порядку и выбрал дату создания - это очень важно для меня. В CSV файле дата создания будет выглядеть следующий образом - 12.12.2012 - пример. Помогите пожалуйста что нужно править в файле ShopImport
Я уже догадался подправитьвот эти два массива:

public $sqlNames = array(
            'Name'=>'name',
            'OldPrice'=>'old_price',
            'Url'=>'url' ,
            'Active'=>'active',
            'Hit'=>'hit',
            'BrandId'=>'brand_id',
            'CategoryId'=>'category_id',
            'RelatedProducts'=>'related_products',
            'MainImage'=>'mainImage',
            'SmallImage'=>'smallImage',
            'ShortDescription'=>'short_description',
            'FullDescription'=>'full_description',
            'MetaTitle'=>'meta_title',
            'MetaDescription'=>'meta_description',
            'MetaKeywords'=>'meta_keywords',
            'Creat'=>'created',
        );
$abbreviations = array(
            'name'  => 'Name',
            'url'   => 'Url',
            'oldprc'=> 'OldPrice',
            'prc'   => 'Price',
            'stk'   => 'Stock',
            'num'   => 'Number',
            'var'   => 'Variant',
            'act'   => 'Active',
            'hit'   => 'Hit',
            'brd'   => 'BrandId',
            'cat'   => 'CategoryName',
            'relp'  => 'RelatedProducts',
            'mimg'  => 'MainImage',
            'simg'  => 'SmallImage',
            'imgs'  => 'AdditionalImages',
            'shdesc'=> 'ShortDescription',
            'desc'  => 'FullDescription',
            'mett'  => 'MetaTitle',
            'metd'  => 'MetaDescription',
            'metk'  => 'MetaKeywords',
            'skip'  => 'skip',
            'creat'=>'Creat',
        );

Но что дальше где заложить логику на изменение или на добавление товара (если он еще не был создан)?
Помогите пожалуйста.

Thumbs up Thumbs down

2 Отредактировано cutter (22-03-2012 00:54:55)

Re: [решено] Импорт товаров

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

как я понял из базы

created     int(11)     

это поле должно иметь вид Unix времени...

Thumbs up Thumbs down

3 Отредактировано cutter (22-03-2012 01:10:00)

Re: [решено] Импорт товаров

я не могу проверить данный вариант, но могу предположить что этот код должен исправить ситуацию
по крайней мере подскажет Вам в каком направлении двигаться
добавление (в том же файле)

...public function prepareProductInsertQuery($data)
    {
        $names = $this->sqlNames;

        $newNames = array();
        $binds = array();
        foreach ($data as $key=>$val)
        {
            if (isset($names[$key]))
            {
                if ($key == 'creat') {$val = strtotime($val);}
                array_push($newNames,$names[$key]);
                $binds[':'.$names[$key]] = $val;
            }
        }

        return array(
            'sql'=>'INSERT INTO shop_products ('.implode(',',$newNames).') VALUES ('.implode(',',array_keys($binds)).')',
            'binds'=>$binds,
        );
    }...

изменение

...    public function prepareProductUpdateQuery($data,$product_id)
    {
        $names = $this->sqlNames;

        $updateArray = array();
        $binds = array();
        foreach ($data as $key=>$val)
        {
            if (isset($names[$key]))
            {
                if ($key == 'creat') {$val = strtotime($val);}
                array_push($updateArray,$names[$key].'=:'.$names[$key]);
                $binds[':'.$names[$key]] = $val;
            }
...

обязательно сообщите о результатах

Thumbs up Thumbs down

4

Re: [решено] Импорт товаров

Спасибо. Вечером обяательно попробую.
А еще вопрос. Мне нужно сделать так что бы записи не обновлялись, а постоянно заносились заного в бд, даже если товар с таким названием уже есть. Как такое реализовать?
Файл csv будет содержать:
Имя товара - описание - цена- и дата(код который вы превели я обязательно опробую)

Thumbs up Thumbs down

5 Отредактировано cutter (22-03-2012 13:19:58)

Re: [решено] Импорт товаров

если я не ошибаюсь, это противоречит основным принципам работы модуля/структуры БД. т.к. название, как я понимаю, обязательно должно иметь уникальное значение. В вашем случае правильным будет указывать в конце названия товара например ##1 для различия имен, а если этого не нужно показывать, тогда на уровне шаблона отсекайте свои добавочные идентификаторы в имени (##1,##2...##n)

Thumbs up Thumbs down

6

Re: [решено] Импорт товаров

Вот этим вот и плохо. Прийдется тогда код в шаблоне дописыватьубирать так скаем весь мусор из названия

Thumbs up Thumbs down

7

Re: [решено] Импорт товаров

это не сложно

preg_replace('##[0-9\s]*&','',$value)

как-то так...
где выводятся имена ($value конечно заменить на необходимую переменную)

Thumbs up Thumbs down

8

Re: [решено] Импорт товаров

Пробую импортировать вот этот файл - http://dl.dropbox.com/u/60831896/%D0%9B … 0Excel.csv
Пишет что импортирование завершенно, но товары не добавляются.

Thumbs up Thumbs down

9 Отредактировано cutter (22-03-2012 15:59:11)

Re: [решено] Импорт товаров

1
Лагман
Лагман
это наименование? если да, то как я понимаю, одинаковых не должно быть

2
(в ручную делали 0_о) вам не хватает кавычек!

"Лагман";"500";"22.03.2012";"GPS"
"Лагман";"700";"22.03.2012";"GPS"
"гороховый";"600";"22.03.2012";"GPS"

без них сбивается табуляция и первый же запрос пытается слить "GPS" в качестве даты - это недопустимо!
3
такие маленькие примеры лучше указывать прямо в форуме... используйте тег code

Thumbs up Thumbs down

10

Re: [решено] Импорт товаров

Вот сделал через EXEL

Лагман;500;21.03.2012;GPS
Борщ;700;21.03.2012;GPS

Только тут тогда нету кавычек

Thumbs up Thumbs down

11

Re: [решено] Импорт товаров

С форматом CSV более коректно работает OpenOffice

https://github.com/imagecms/ImageCMS - ночные сборки корпорейта
https://scrutinizer-ci.com/g/imagecms/ImageCMS/badges/quality-score.png?b=development https://codeclimate.com/github/imagecms/ImageCMS/badges/gpa.svg

Thumbs up Thumbs down

12

Re: [решено] Импорт товаров

Скачал я openOffice
Создал CSV - http://dl.dropbox.com/u/60831896/asd.csv
Но все равно при импорте пишет что все нормально, но на самом деле импорт не производится.

Thumbs up Thumbs down

13

Re: [решено] Импорт товаров

попробуйте последним полем добавить "skip"

Люди меняются, времена меняются, результат остается...

Thumbs up Thumbs down

14 Отредактировано blud (22-03-2012 18:13:34)

Re: [решено] Импорт товаров

Вроде бы работает.
Образовался еще один вопрос:
Использую код выше, из даты 22.03.2012 генерируется Unix время совершенно другое.
В редактировании товара вылазиет 1970 год создания товара.
Почему вот так получается?
В БД вставляется UNIX дата - 2103

Thumbs up Thumbs down

15

Re: [решено] Импорт товаров

strtotime()  из примеров выше использовали?

Thumbs up Thumbs down

16

Re: [решено] Импорт товаров

Именно так

Thumbs up Thumbs down

17 Отредактировано blud (22-03-2012 19:20:39)

Re: [решено] Импорт товаров

А в чем может быть причина?
Может быть потому что система сама еще создает дату создания?

Thumbs up Thumbs down

18

Re: [решено] Импорт товаров

если она её создает, тогда дата была бы верной и не зависила от csv
может я ошибся со значением

if ($key == 'creat') {$val = strtotime($val);}

Попробуйте "Creat" или

Thumbs up Thumbs down

19

Re: [решено] Импорт товаров

Да действительно, заработало!
Только после добавления товар становится неактивным который добавил через csv. Как сделать что бы он сразу становился активным?

Thumbs up Thumbs down

20

Re: [решено] Импорт товаров

используйте поле "act"
при этом прийдется в csv добавить столбец со значением 1

Thumbs up Thumbs down

21

Re: [решено] Импорт товаров

Большое спасибо!
Помогли, выручали:)

Thumbs up Thumbs down

22

Re: [решено] Импорт товаров

помогли чем смогли smile

Thumbs up Thumbs down