Поздравление с 8 марта [2011]




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

32 Comments

  1. execombat

    Обработка-поздравлялка пользователей базы с 8 марта.

    Используется персонаж Merlin (читает текст вслух).

    Используется внешнее приложение «цветы», при вызове которого экран заполняется цветами.

    Перейти к публикации

    Reply
  2. Abadonna

    Когда ж, блин, они закончатся, эти поздравлялки? 😥

    Неистребимы прям, как перенумераторы.

    И Мерлин, читающий вслух, — у вас там юзверей всех колонками побаловали?

    Reply
  3. vladismi

    Картинка качается, а где же поздравлялка?

    Reply
  4. WolfKgn

    таки да — а где сама поздравлялка? 🙂

    ЗЫ.. нашел.. но как-то странно она выложена

    Reply
  5. execombat

    vladismi

    SpiderRu

    Исправлено. Можно качать.

    Reply
  6. execombat
    Abadonna пишет:

    Когда ж, блин, они закончатся, эти поздравлялки?

    Не пойму. Чего плохого в поздравлялках? Кому не нужно, те и не качают.

    Abadonna пишет:

    … у вас там юзверей всех колонками побаловали?

    Колонки легко заменяются гарнитурой.

    Reply
  7. Altair777
    Abadonna пишет:

    Когда ж, блин, они закончатся, эти поздравлялки? 😥

    Неистребимы прям, как перенумераторы.

    от перенумераторов хоть какой-то практический прок был 😉

    Reply
  8. UncleVader
    Abadonna пишет:

    Когда ж, блин, они закончатся, эти поздравлялки? smile:cry:

    Неистребимы прям, как перенумераторы.

    Altair777 пишет:

    от перенумераторов хоть какой-то практический прок был smile;)

    Необоснованное ворчание!

    А что плохого или вредного?!

    Reply
  9. Altair777

    (7) полезного ничего, а вредного?… засорение каталога разработок 🙂

    Reply
  10. UncleVader

    (8) Не соглашусь! Как источник эндорфинов с медицинской точки зрения очень даже полезно, особенно после затяжной унылой зимы!

    Reply
  11. rsu55

    антивирусник файл flower.exe определяет как вирус Joke.Rosenu

    Reply
  12. execombat

    А что за антивирусник? NOD32 и Avast молчат.

    Reply
  13. Muhin555

    неплохо было бы не из конфигурации, а из доп.обработок эти поздравлялки запускать….

    Reply
  14. rsu55
    execombat пишет:

    А что за антивирусник? NOD32 и Avast молчат.

    Symantec…

    Reply
  15. UncleVader

    Разделил логон-скрипты на мужской и женский, в женский закинул flower.exe, все просто счастливы 😀

    Reply
  16. execombat

    Я так понимаю теперь девушки получают цветы сразу после включения компьютера и ввода пароля? 😀

    Reply
  17. floodprog

    работать некому. заводы стоят ! 😀

    Reply
  18. onyx

    Когда ж, блин, они закончатся, эти поздравлялки?

    Неистребимы прям, как перенумераторы.

    Reply
  19. axelload

    Отличная обработка. только вот говорящие фигурки на windows7 не работают. пришлось выпрашивать патч у мелкомягких

    Reply
  20. axelload

    патч прислали. фигурки заработали но анимация win7 работает весьма странно

    Reply
  21. execombat

    А что за патч? Есть ссылка? У меня на win 7 персонажи работают. Только фон у фигурок не прозрачный (

    Reply
  22. petrovaUL

    Отличная обработка. только вот говорящие фигурки на windows7 не работают. Какай патч нужен?

    Reply
  23. execombat

    Для Win 7 нужно установить MS Agent. Скачал патч здесь

    Reply
  24. ivan07

    Интересная обработка, испытаю на своих коллегах. Спасибо!

    Reply
  25. zavyzka

    Звук не работает.

    Reply
  26. freezetron

    Спасибо! Всем очень понравилось!

    Reply
  27. GREY_x

    Кто-нибудь решил проблему с не прозрачным фоном у фигурок в винде 7-ке?

    Reply
  28. spa07

    КУсок вставки в процедуру ПриНачалеРАботыСИстемы отрабатывает некорректно, а именно

    ВосстановитьЗначение(«ПоздравлялкаС8Марта_НеПоказыватьПовторно») первый раз возвращает неопределено и форма не открывается.

    Пришлось допиливать.

    Reply
  29. execombat

    (26) GREY_x,

    Для того чтобы на WIN 7 фон у фигурок был прозрачным нужно установить патч. Ссылка есть выше. А вот с фоном цветов не знаю что делать.

    Reply
  30. stata

    внешнее приложение «цветы», при вызове которого экран заполняется цветами можно такое скачать или нет. Очень хочется

    Reply
  31. stata

    хОЧУ СКАЧАТЬ ПРОСТО внешнее приложение «цветы», при вызове которого экран заполняется цветами, МОЖНО ЭТО КАК ТО ИЛИ НЕТ.

    Reply
  32. axelload

    Спустя 8 лет на 8 марта попробовали запустить обработку на 10. к сожалению ничего не вышло. не поддерживается ОС ((

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *