За последние 24 часа нас посетили 64035 программистов и 1741 робот. Сейчас ищут 857 программистов ...

Разбор CSV файла

Тема в разделе "PHP для новичков", создана пользователем Yankovitz, 23 сен 2017.

  1. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Добрый день. Имею csv файл со следующим содержанием:
    Код (Text):
    1.  
    2. "product_title","product_cat","product_price","comment_status"
    3. "Огнетушитель углекислотный ОУ-1","ognetushiteli","653","closed"
    4. "Огнетушитель углекислотный ОУ-2","ognetushiteli","731","closed"
    5. "Огнетушитель углекислотный ОУ-3","ognetushiteli","919","closed"
    Как записать данные из csv файла в базу данных? Так как сайт на Wordpress, то запись будет в произвольные поля update_post_meta('product_price', '653');
    Есть условия: последовательность и количество пунктов в первой строке - заранее неизвестно.
    Разбираю так:
    PHP:
    1. $row = 1;
    2. $file = fopen("test.csv", "r"); // открываем файл
    3. // разбираем файл построчно
    4. while( false !== ( $data = fgetcsv($file, 1000, ";") ) ){
    5.     $countPlace = count( $data ); // количество полей в строке
    6.     echo "$countPlace полей в строке $row: <br>";
    7.     // выводим значения
    8.     for ( $c=0; $c < $countPlace; $c++ ) {
    9.         echo $data[ $c] . "<br>";
    10.     }
    11.     $row++;
    12. }
    13. fclose( $file ); // закрываем файл
     
  2. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Сначала, эээээ.., нужно разобрать первую строку. То есть каждое мета поле прикрепляю к переменной.
    Код (Text):
    1.  
    2. $meta_names = $file[0];  // получаю первую строку
    3. $metas = explode( ';', $meta_names );  // разбиваю через разделитель ;
    4. $countPlace = count( $meta_names ); // считаем количество полей в строке
    5. for( $i = 0; $i < $countPlace; $i++ ){
    6.        $meta_[$countPlace] = $metas[$countPlace];
    7. }
    8. endfor();
    Я так понимаю должно быть следующее:
    Код (Text):
    1.  
    2. $meta1 = product_title
    3. $meta2 = product_cat
    4. $meta3 = product_price
    5. $meta4 = comment_status
    ???
    Прошу откликнуться...
    --- Добавлено ---
    Собственно думаю сам разобраться. Просто прошу знатоков, верное ли направление. Спасибо.
     
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а где в этой строке:
    хоть один ;
    ?