За последние 24 часа нас посетили 41142 программиста и 1813 роботов. Сейчас ищут 1045 программистов ...

Php импорт из csv. Работает, но нужно дополнение, чтобы строку читал до определенного знака

Тема в разделе "Прочие вопросы по PHP", создана пользователем Jaja2017, 21 дек 2017.

  1. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    заменяй int_text($data[1]) на mb_substr(mb_strrchr($data[1],';',false),1)

    и

    $catID=db_r('select categoryID from '.CATEGORIES_TABLE.' where name='.mb_substr(mb_strrchr($data[1],';',false),1));
    var_dump($catID);
    exit;

    а ты БД каждый раз чистишь после импорта чтоль?
     
  2. Jaja2017

    Jaja2017 Новичок

    С нами с:
    21 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    Да так проще. Очистил и все. Никаких с этим проблем не связано

    Получился код

    $catID=db_r('select categoryID from '.CATEGORIES_TABLE.' where name='.mb_substr(mb_strrchr($data[1],';',false),1));
    var_dump($catID);
    exit;


    Ответ: string(0) "" - ничего не добавилось
     
  3. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    так ничего и не добавится , БД пустая, поэтому и не вернет ничего из базы

    //var_dump($catID);
    //exit;

    Закоментируй строки

    далее

    if (!$catID){
    exit($row);
     
  4. Jaja2017

    Jaja2017 Новичок

    С нами с:
    21 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    Просто обновляется страница при импорте и все. Никаких действий не происходит.
    Синхронизация так построена получается
    , что автоматом все обновляет.

    Если базу не чистить, все равно все будет так же
     
  5. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Выкладывай на сервер куда нить...это бестолку все гадать тут (
     
  6. Jaja2017

    Jaja2017 Новичок

    С нами с:
    21 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    Эм, что выкладывать?
     
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    сайт с этим импортом
     
  8. Jaja2017

    Jaja2017 Новичок

    С нами с:
    21 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    Если речь о файле, то:

    Код (Text):
    1. <form enctype="multipart/form-data" method="post">
    2.     <input type="file" name="import" required>
    3.     <input type="submit">
    4. </form>
    5.  
    6. <?php
    7.    if (isset($_FILES) && !empty($_FILES)) {
    8.  
    9.        $input_file= './'.$_FILES['import']['name'];
    10.        $r = move_uploaded_file($_FILES['import']['tmp_name'], $input_file);
    11.        if (!$r)
    12.            die('<h2>Ошибка сохранения файла</h2>');
    13.  
    14.        include_once "../cfg/ajax_connect.inc.php";
    15.        include_once "../cfg/category_functions.php";
    16.        $col = db_r('show columns FROM `'.PRODUCTS_TABLE.'` where `Field` = \'1C\'');
    17.        if (!$col) {
    18.            db_query('ALTER TABLE `'.PRODUCTS_TABLE.'` ADD `1C` VARCHAR(60) NULL , ADD UNIQUE (`1C`);');
    19.        }
    20.  
    21.  
    22.        $col = db_r('show columns FROM `'.PRODUCTS_TABLE.'` where `Field` = \'url_pic\'');
    23.        if (!$col) {
    24.            db_query('ALTER TABLE `'.PRODUCTS_TABLE.'` ADD `url_pic` VARCHAR(255) NULL;');
    25.        }
    26.  
    27.        $col = db_r('show columns FROM `'.PRODUCTS_TABLE.'` where `Field` = \'del\'');
    28.        if (!$col) {
    29.            db_query('ALTER TABLE `'.PRODUCTS_TABLE.'` ADD `del` int(1) NULL');
    30.        }
    31.        update_field(PRODUCTS_TABLE,array('del'=>1));
    32.        if (($handle = fopen($input_file, "r")) !== false) {
    33.            $opt=array();
    34.            while (($data = fgetcsv($handle, 2000, ";")) !== false) {
    35.                $num = count($data);
    36.                $row++;
    37.                for ($c = 3; $c < $num; $c++) {
    38.                    if (!empty($data[$c])) {
    39.                       $id_option = db_r('select optionID from '.PRODUCT_OPTIONS_TABLE.' where `name`='.int_text($data[$c]));
    40.                        if (!$id_option) {
    41.                            $option = array();
    42.                            $option['name'] = $data[$c];
    43.                            add_field(PRODUCT_OPTIONS_TABLE, $option);
    44.                            $id_option = db_insert_id();
    45.                        }
    46.                        $opt[$c]= $id_option;
    47.                    }
    48.                }
    49.                break;
    50.            }
    51.  
    52.            while (($data=fgetcsv($handle, 4000, ";")) !== false) {
    53.                $esql=0;
    54.                $num = count($data);
    55.                $row++;
    56.   $catID=db_r('select categoryID from '.CATEGORIES_TABLE.' where name='.mb_substr(mb_strrchr($data[2],';',false),1));
    57. //var_dump($catID);
    58. //exit;
    59. if (!$catID){
    60. exit($row);
    61. }
    62.          
    63.                if (empty($catID)){
    64.                    $catID=0;
    65.                }
    66.                $barnd_id=db_r('select brandID from '.BRAND_TABLE.' where `name`='.int_text($data[4]));
    67.                if (!$barnd_id){
    68.                    add_field(BRAND_TABLE,array('name'=> $data[4]));
    69.                    $barnd_id = db_insert_id();
    70.                }
    71.                $product_arr = array();
    72.            
    73.                $productID=db_r('select productID from '.PRODUCTS_TABLE.' where 1C='.int_text($data[3]));
    74.                if ($productID){
    75.                    $product_arr['Price']=$data[11];
    76.                    $product_arr['in_stock'] = $data[9];
    77.                    $product_arr['del'] = 0;
    78.  
    79.                    update_field(PRODUCTS_TABLE, $product_arr,'productID='.$productID);
    80.  
    81.                }else {
    82.  
    83.                    $product_arr['name'] = $data[5];
    84.                    $product_arr['h1'] = $data[5];
    85.                    $product_arr['meta_title'] = $data[5];
    86.                    $product_arr['product_code'] = $data[3];
    87.                    $product_arr['1C'] = $data[3];
    88.                    $product_arr['categoryID'] = $catID;
    89.                    $product_arr['brandID'] = $barnd_id;
    90.                    $product_arr['Price'] = $data[11];
    91.                    $product_arr['enabled'] = 1;
    92.                    $product_arr['in_stock'] = $data[9];
    93.                    $product_arr['description'] = $data[7];
    94.                    $product_arr['del'] = 0;
    95.                    if (!empty($data[6])) {
    96.                       $product_arr['url_pic']=mb_strstr($data[6],';',true);
    97.  
    98.                    }
    99.                    add_field(PRODUCTS_TABLE,$product_arr);
    100.                    $productID = db_insert_id();
    101.  
    102.                    /*if ($file_content=file_get_contents($data[6])) {
    103.                        $file_name= './tmp/'.$productID.'.jpg';
    104.                        if (file_put_contents($file_name, $file_content)) {
    105.                            $new_pic_name = 'pic_'.$productID;
    106.                            img_resize($file_name, dirname(__FILE__)."/../products_pictures/".$new_pic_name.".jpg", RESIZE_NORMAL_X, RESIZE_NORMAL_Y, CONF_IMAGE_COLOR);
    107.                            //thumbnail
    108.                            img_resize($file_name, dirname(__FILE__)."/../products_pictures/".$new_pic_name."-S.jpg", RESIZE_SMALL_X, RESIZE_SMALL_Y, CONF_IMAGE_COLOR);
    109.                            //enlarged photo
    110.                            img_resize($file_name, dirname(__FILE__)."/../products_pictures/".$new_pic_name."-B.jpg", RESIZE_BIG_X, RESIZE_BIG_Y, CONF_IMAGE_COLOR);
    111.                            img_resize($file_name, dirname(__FILE__)."/../products_pictures/".$new_pic_name."-SC.jpg", 50, 50, CONF_IMAGE_COLOR);
    112.                            unlink($file_name);
    113.                            $pic_arr = array();
    114.                            $pic_arr['big_picture'] = $new_pic_name."-B.jpg";
    115.                            $pic_arr['thumbnail'] = $new_pic_name."-S.jpg";
    116.                            $pic_arr['picture'] = $new_pic_name.".jpg";
    117.                            update_field(PRODUCTS_TABLE, $pic_arr, 'productID='.$productID);
    118.                        }
    119.                    }*/
    120.  
    121.                    foreach ($opt as $key=>$id){
    122.                        if (empty($data[$key])) continue;
    123.                        $variantID=db_r('select variantID from '.PRODUCT_OPTIONS_VAL_TABLE.' where name='.int_text($data[$key]).' and optionID='.$id);
    124.                        if (!$variantID){
    125.                            $var_arr=array();
    126.                            $var_arr['name']= $data[$key];
    127.                            $var_arr['optionID']=$id;
    128.                            add_field(PRODUCT_OPTIONS_VAL_TABLE,$var_arr);
    129.                            $variantID= db_insert_id();
    130.                        }
    131.                        $arr_arr=array();
    132.                        $arr_arr['optionID']=$id;
    133.                        $arr_arr['variantID'] = $variantID;
    134.                        $arr_arr['productID'] = $productID;
    135.                        $arr_arr['default'] = 1;
    136.                        add_field(PRODUCT_OPTIONS_V_TABLE,$arr_arr);
    137.                    }
    138.                }
    139.  
    140.  
    141.                //update_products_Count_Value_For_Categories(0);
    142.  
    143.  
    144.  
    145.  
    146.  
    147.  
    148.                /*for ($c = 0; $c < $num; $c++) {
    149.                    echo $data[$c]."<br />\n";
    150.                }*/
    151.            }
    152.            db_query('DELETE FROM `'.PRODUCTS_TABLE.'` WHERE del=1');
    153.            fclose($handle);
    154.        }
    155.        echo "<h1>finish</h1>";
    156.    }
    Напомню, csv тот же, только с первым пустым полем, поэтому по цифрам идет сдвиг колонок на одну. До этого пустое поле (первую калонку) удалял.
    --- Добавлено ---
    Дмитрий, я уже писал, что выложить в онлайн пока возможности таковой нет...
    --- Добавлено ---
    Сейчас заметил интересную петрушку. Что после удаления: $cat_ar['name']=mb_substr(mb_strrchr($data[2],';',false),1);" , товары добавляются, но не добавляется категория. Все уходить в закрытую корневую папку. При возвращении строки, выдает кучу каталогов, как на скриншотах, которые давал.
    --- Добавлено ---
    Может в этом проблема.... Из

    Код (Text):
    1.  if (!$catID){
    2.                   $cat_ar=array();
    3.                   $cat_ar['name']=mb_substr(mb_strrchr($data[2],';',false),1);
    4.                    $cat_ar['h1'] = $cat_ar['name'];
    5.                    $cat_ar['meta_title'] = $cat_ar['name'];
    6.                    $cat_ar['enabled']=1;
    7.                    $cat_ar['parent']=0;
    8.                    add_field(CATEGORIES_TABLE, $cat_ar);
    9.                    $catID = db_insert_id();
    10.                }
    Удалил add_field(CATEGORIES_TABLE, $cat_ar);

    В итог товары так же добавились в корневую закрытую папку. Разделы не добавились
    --- Добавлено ---
    Мне тут помогли в лс скидываю данные
    --- Добавлено ---
    @Dmitriy A. Arteshuk к сожалению больше помогать не сможет (чсегодня) Если есть те, кто может окончательно помочь если за спасибо или за финансовую сторону, мне сейчас помогли, будут предоставлены доступы.
     
  9. Jaja2017

    Jaja2017 Новичок

    С нами с:
    21 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    Неужели на всем портале php нет тех, кто может помочь? Повторюсь, можно не бесплатно, но и цена должна быть адекватной конечно, по возможности...