1. мы избавляемся от офтопа и флуда - инфа ЗДЕСЬ

"Правильный" импорт meta_value в базу данных

Тема в разделе "Сайтострой - все о технической стороне сайтов", создана пользователем Jekyll1911, 17 сен 2015.

  1. Jekyll1911

    Jekyll1911 Постоянец

    Пол:
    Мужской
    Есть вот такая штука
    Screenshot_1.png

    Задался задачей импортировать много-много вопросов и ответов на них на сайт. Плагин купил, настроил всё под себя и столкнулся с такой проблемой. При импорте ответов необходимо указывать meta_value, пример которого на картинке выше...если быть точным, то там написано

    Код:
    a:1:{i:0;a:3:{s:6:"usr_id";s:1:"4";s:6:"ans_id";s:1:"0";s:4:"text";s:3:"О1";}}
    По сути, в каждом после всё одинаково, кроме того, что выделено жирным. s:3 это счетчик, который увеличивается в зависимости от того, что написано "в кавычках". За каждую русскую букву счетчик увеличивается на +2, за любой другой символ +1.

    Собственно вопрос. Есть ли какой либо православный способ посчитать это значение или какой либо другой способ генерировать это meta-value или какой либо способ импорта в WP чтобы правильно это поле заполнялось.

    Или хотябы подскажите как это всё называется и я про это почитаю, потому что даже не могу понять с чего начать...

    Заранее спасибо

    ЗЫ: Тему поместил куда посчитал нужным. Вполне возможно, что нужно в какой нибудь тех раздел, но оного не обнаружил.
     
  2. Jekyll1911

    Jekyll1911 Постоянец

    Пол:
    Мужской
    Оказалось, эта штука наывается сериализация

    Подробнее тут....http://lifeexample.ru/php-primeryi-skriptov/serializatsiya-php.html

    Осталось выяснить как массово сериализировать данные вручную, чтобы потом просто импортировать в БД=\
     
    Последнее редактирование: 17 сен 2015
  3. efs

    efs Повелитель дескрипторов

    как вариант, посмотреть какой запрос генерит плагин при ручном добавлении записи и загонять через sql запрос имитируя движок, чтобы необходимые данные движок/бд добавляли автоматом.
     
  4. Jekyll1911

    Jekyll1911 Постоянец

    Пол:
    Мужской
    Это стандартная функция php
    По сути, можно было бы обычным экселем узнавать длинну текста и проблемы бы не было, но тут загвоздка, что функция считает символы кириллицы +2 за каждый символ и +1 за любые другие символы. Я думаю, это связано с тем, что на один русский символ выделяется 2 байта, а любой другой по одному....а это зависит от кодировки БД
    Вот как заставить какой нибудь эксель посчитать символы так, чтобы все русские он считал за +2
     
  5. Думка

    Думка Постоянец

    Пол:
    Мужской
    По сути простой макрос замены - русский алфавит (буквы) меняем на 2 а остальные символы на 1
    потом суммируем...
    на vba сделать такое можно... а потом 1 кнопкой все обрабатывать)))
     
    • Нравится Нравится x 1
  6. iamincognito

    iamincognito Контент-генератор

    Пол:
    Мужской
    Очевидно, что если сериализованные данные потом будут использоваться в php, то и сериализовать их нужно посредством php. Если это делается штатными средствами пхп, то все можно сделать "в 10 строчек кода", грубо говоря (только данные вывалить в csv а не пытаться парсить эксель - тоже можно, но нафига?). Использование экселя (или любого другого текстового или табличного процессора) для такого рода задач - это подкладывание себе граблей. Может сработает, а может и нет. А может еще хуже - сработает правильно для большинства данных, но ошибочно для некоторых (и ты этого не заметишь сразу).
     
  7. runner

    runner Постоянец

    Пол:
    Мужской
    Как то так:
    содержание file.txt:
    2;0;О1
    5;6;О2
    7;8;О3
    6;4;О4
    7;9;О5
    содержание файла скрипта:
    Код:
    <?php
    $file_arr = file( "file.txt" );
    $num = count($file_arr);
     
    for($i=0; $i < $num; $i++)
    {$item_arr = explode(";", $file_arr[$i]);
     
      $arr[0][usr_id] = trim($item_arr[0]);
      $arr[0][ans_id] = trim($item_arr[1]);
      $arr[0][text] =   trim($item_arr[2]);
     
      $ser_string = serialize($arr);
      echo $ser_string."<br>";
    }
    ?>
    
    результат
    res.JPG :

    Первую строку только не пойму почему для двойки сериализует как s:4.
     
    Последнее редактирование: 18 сен 2015
  8. efs

    efs Повелитель дескрипторов

    а на зачем в третьей строке к кол-ву строк дописывать тег перевода строки?
     
  9. runner

    runner Постоянец

    Пол:
    Мужской
    Да, случайно при копировании с другой строки попал. Спасибо, убрал.