Пишем данные в SQL макросом <PHP_SCRIPT> для версии X

Тема в разделе "Импорт CSV", создана пользователем Kreol, 10 май 2014.

  1. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.637
    Приветствую! Пользователи CD
    ПЕРЕД ЛЮБЫМИ ПОПЫТКАМИ РАБОТЫ С БАЗОЙ, ОСОБЕННО ЖИВОЙ(КОТОРАЯ РАБОТАЕТ БЕЗ ВАШЕГО ВМЕШАТЕЛЬСТВА) ОБЯЗАТЕЛЬНО СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ. А ЕЩЕ ЛУЧШЕ ПРОВОДИТЕ ЕКСПЕРЕМЕНТЫ НА ТЕСТОВЫХ БАЗАХ
    Так как у многих возникают проблемы с настройкой PHP скриптов, тем более, что пару дней назад поступило существенное обновление для этого направления, предлагаю вам в дополнение к посту Ссылки недоступны для гостей видео по настройке макроса <PHP_SCRIPT> в версии X (10.9917)

    Ссылки недоступны для гостей

    Текст шаблона вывода:
    Код:
    <PHP_SCRIPT=http://localhost/name_script.php>title=[URLENCODE]<CD_GRAN_1!>[/URLENCODE]
    genres=[URLDECODE]<CD_GRAN_2!>[/URLDECODE]</PHP_SCRIPT>
    Скрипт загружаемый на сервер: (сохраняем в кодировке UTF-8, например Notepad++)
    PHP:
    <?php
    $db 
    mysql_connect("localhost""root""");
    mysql_select_db("new_base");
    mysql_query("SET NAMES utf8");
    mysql_query("INSERT INTO `temp`(`id`, `text`, `text2`) VALUES ('','$_POST[title]','$_POST[descr]')");
    // строка для проверки нашего скрипта
    //mysql_query("INSERT INTO `temp`(`id`, `text`, `text2`) VALUES ('','111','222')");
    echo "Скрипт отработал";
    ?>
    Если, Вам, необходимо передать в поле многострочный текст, то необходимо использовать конструкцию:
    Код:
    title=[URLENCODE]<CD_GRAN_1!>#13<CD_GRAN_2!>#13<CD_GRAN_3!>[/URLENCODE]
    Если у Вас при тестовом запуске скрипт напишет, что что-то не найдено. Проверьте название базы данных, пользователя, пароль и хост.

    Успехов в ваших начинаниях.
    Можете оставлять комментарии и просьбы.
     
    Последнее редактирование: 11 авг 2014
    panko нравится это.
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.073
    Город:
    Барнаул
    Спасибо, но.
    Справку читайте, пожалуйста Ссылки недоступны для гостей
    Вместо URLENCODE нужно использовать DATAENCODE!!!
     
  3. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.169
    Адрес:
    @kagorec
    Город:
    Riga
    Вариант хороший как "один из многих" но до этого вполне все импортировалось и без dataencode и urlencode.
    Стоило отметить когда в контенте встречается кавычка
    то стоит ее закоментировать слешем иначе эрор при импорте не миновать))
    Остальные ньюансы решаемы по мере встречи, благо функционала педостаточно.
    Сейчас Content Downloader можно назвать не просто парсером, а комбайном по переработке/уникализации/импорт/загрузке контента (картинок в том числе) сразу на несколько сайтов.
     
  4. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.637
    чуть позже перепишу видео, слишком многое нужно уже обговаривать.
     
  5. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.169
    Адрес:
    @kagorec
    Город:
    Riga
    На видео и так много информации как для новичка, если правда там собрался сделать все по "феншую" типо повернуть монитор на запад системник на север... другое дело.))
    На видео база utf-8_general_si это вордпрессам хорошо, а dle сз1251_general_si, а также соит отметить что самый универсальный и рабочий меод импорта в дб можно подсмотреть в движке сайта в самом скрипте добавления в базу (в дле это .../modules/addnews.php)
     
  6. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.637
    будем работать с этим вопросом) Спасибо за подсказки, на самом деле это конечно для новичка.
     
  7. jkvoka

    jkvoka New Member Пользователи

    Регистрация:
    27 апр 2013
    Сообщения:
    1
    Подскажите, а надо запускать на компьютере денвер (локальный сервер) чтобы работал файл с пост запросом?
     
  8. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.073
    Город:
    Барнаул
    Если вы отправляете данные в MySQL-базу на сервер в интернете, то вам не нужен Денвер. Денвер служит для того, чтобы обрабатывать данные на локальной машине (без запросов к интернет).
     
  9. Djahat

    Djahat Well-Known Member Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    529
    Город:
    Мордор
    Всем привет:

    Я правильно понимаю, что при помощи этого я могу сделать следующее:

    Настроить проект парсинга - и запускать его каждый день по расписанию.

    Этот проект будет собирать с донора данные и добавлять/обновлять данные прямо в моих таблицах mysql ?
     
  10. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.169
    Адрес:
    @kagorec
    Город:
    Riga
    И не только, автор темы показал какие возможности имеет программа в связке с хорошими скриптами php.
    п.с. единственно не хватает в первом посте "Первым делом сделайте резевную копию базы данных ...":eek:liver:
     
  11. Djahat

    Djahat Well-Known Member Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    529
    Город:
    Мордор
    Кто хоть раз такие штуки запускал, делает резервную копию всего в жизни, уже по два раза :)


    А ты Сам в этой теме хорошо разбираешься ?
    Сможешь мне короткий тренинг провести за $

    Моя цель:
    есть несколько сайтов-доноров
    Под них есть проекты парсинга.

    Сейчас я все делаю в 2 этапа:
    1 паршу сайт донора
    2 через CSV заливаю обновленные данные в opencart.

    Надо научится:
    настроить CD так, чтобы он раз в сутки парсинг заускаляся автоматически и обновлял БД opencarta - по ключу URL Донора - добавил статус наличия и цену (+наценка).

    И пролить свет: как лучше настроить проверку все ли товары донора у меня есть на сайте!
     
  12. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.637
    Пишите в скайп, обсудим.
     
  13. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.637
    Я если честно вообще даже об этом не подумал) так как я ВСЕГДА работаю на тестовой базе. Но да, дописать надо)
     
  14. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.637
    И пишем вдогонку, благодаря ipname родили скрипт проверки существования в базе значения.
    PHP:
    <?php
    $db 
    mysql_connect("localhost""root""");
    mysql_select_db("my_bd");
    mysql_query("SET NAMES utf8");
    //получаем значение поля title из базы NAME_TABLE где title = значение из CD (для таких сверок идеально подходят лишь числа)
    $Test_title mysql_result(mysql_query("SELECT title FROM NAME_TABLE WHERE title='$_POST[header]'"),0);
    //если в переменной не число (т.е. в базе такого значения нету), то идет добавление в базу
    if (is_numeric($Test_title)==false
    {
      
    mysql_query("INSERT INTO NAME_TABLE (title, introtext) VALUES ('$_POST[header]', '$_POST[text]')");
    }

    ?>
     
  15. Djahat

    Djahat Well-Known Member Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    529
    Город:
    Мордор
    Прикольная тема.
    А готовый процесс для опенкарта кто-нибудь уже делал?

    Парсинг и обновление цены и статуса наличия ? А может еще и опций?
     
  16. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.169
    Адрес:
    @kagorec
    Город:
    Riga
    При проверке наличия перед импортом это хорошо но для обновления информации другие условия в скрипте используются (например проверка артикула и по его соответствию обновление цены)
     
  17. inarkcorp

    inarkcorp New Member Пользователи

    Регистрация:
    11 сен 2014
    Сообщения:
    15
    Подскажите как правильно вставлять макросы в php скрипт,
    пробовал на примере [DELTAGS:a][/DELTAGS]
    1 вариант - text=[DELTAGS:a][URLENCODE]<CD_GRAN_2!> <CD_GRAN_3!>[/URLENCODE][/DELTAGS] - ссылки остаются
    2 вариант - text=[URLENCODE]<CD_GRAN_2!> [DELTAGS:a]<CD_GRAN_3!>[/DELTAGS][/URLENCODE] - ссылки остаются, тег [DELTAGS] появляется в тексте.

    <PHP_SCRIPT=http://localhost/insert.php>header=[URLENCODE]<CD_GRAN_1!>[/URLENCODE]
    text=[URLENCODE]<CD_GRAN_2!> <CD_GRAN_3!>[/URLENCODE]
    status=draft
    comstatus=closed
    pingstatus=closed
    pdate=<CD_GRAN_4!> <CD_GRAN_6!>
    pdategmt=<CD_GRAN_4!> <CD_GRAN_6!></PHP_SCRIPT>
     
    Последнее редактирование: 17 сен 2014
  18. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.637
    Примените поиск/замену:
    Код:
    re:<(.*?)>|
    для второй границы.
    Код:
    [DELTAGS:a][/DELTAGS]
    удалите
     
  19. Фёдор

    Фёдор Active Member Пользователи

    Регистрация:
    9 фев 2014
    Сообщения:
    147
    Приветствую друзья!
    У меня проблема с импортом через скрипт.
    В базу нужно передать значение 77 или 78, в зависимости от домена сайта-донора.
    Если прописать просто вот так: created_by=77 , то все нормально передается, а вот использовать реплейс скрипт почему-то не хочет.
    Вот как мне нужно сделать:
    created_by=[FIRST_REPLACE(www.|{break}http://russian.rt.com/{skip}|77{break}http://pravda.ru/{skip}|78)][DATAENCODE]<CD_DOCURL!>[/DATAENCODE][/FIRST_REPLACE]
    В конечном итоге не получается по каким-то причинам передать цифры в базу.
    Пробовал менять очередность [/DATAENCODE] и [/FIRST_REPLACE] в выражении, пробовал вместо фирст реплейс использовать просто реплейс, но это не приводит ни к какому результату.
     
  20. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.637
    Федор, а какой номер PHP вы используете? поставьте 3,4 или 5 и будет работать.
    Почему так, идем в Ссылки недоступны для гостей и потом смотрим ЛОГ
    С другой стороны, что мешает эту замену сделать в самом php скрипте?
    P.S. Если не ошибаюсь то лучше всю строку передавать через [DATAENCODE]
     

Поделиться этой страницей