Ржунимагу ;-)))




Принцип обмена данными из 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='\

46 Comments

  1. onyx

    ппц…..

    Reply
  2. zaic

    Lotox: Что с сервером случилось?

    Коннект: Нащяльника, мая сервира паставиль, фрибизьдя инсталя сделаль, апачи сабраль, пыхапе патключиль, сапускаю, а ано — ажамбех пашамбе эшельбе шайтанама!

    Lotox: Кирилл, если не начнешь выражаться нормально, мы найдем нового системного администратора. Повторяю вопрос — что случилось?

    Коннект: Што-о?.. Слуцилась… )

    эы. пятничные комментарии..)

    Reply
  3. venger

    Жена послала мужа программиста в магазин:

    Жена: Купи палку колбасы, если будут яйца, купи десять штук…

    Муж в магазине: Дайте палку колбасы. У Вас яйца есть?

    Продавщица: Да.

    Муж в магазине: Тогда еще девять палок колбасы.

    Reply
  4. PeRom

    Особенно про робота убил, начальник даже озираться начал…:))))

    Reply
  5. Diamond

    теперь в блогах будем копировать баш?

    Reply
  6. venger

    (5) Во-первых, я ж не тупо скопировал все подряд, а ВЫБРАЛ, а это ВАЖНО;-)))

    Во-вторых, будем теперь в блогах задавать вопросы, типа как на Вас отразился кризис туалетной бумаги?

    В-третьих, хорошее настроение дороже, тем более в условиях кризиса, чем какая-нить обработка, так что делайте выводы.

    в-четвертых, во всем надо знать меру, думаю она у меня есть.

    Reply
  7. seermak

    Вакансия «Программист Психологической службы»:

    — Але! У нас ошибка! Не работает бля-бля-бля…

    — Вы хотите об этом поговорить? :-)))

    Надо бы подыскать себе такую работу

    Reply
  8. O-Planet

    И это — на фоне истерик по поводу юморных блогов! Вот уважаю тех, у кого свое мнение сочетается с талантом его отстаивать. Зачетный блог…

    Reply
  9. sytkosa

    Про «шпильку» улыбнуло Ж)

    Reply
  10. Cifer

    Хорошая подборочка! 🙂

    Reply
  11. CheBurator

    добавка с Баша:

    .

    xtreme: кто там говорит, что у Windows цена высокая и работает не так… Или Linux допилить никак не могут, занимаясь им JustForFun и его приходится допиливать руками. Вы на 1С посмотрите. Тысячи программеров по всей стране бьются над ней уже больше десятка лет в полный рабочий день без сна и отдыха, тратятся сотни и тысячи человеко-часов, куча бабла уходит и на покупку и на сопровождение. Но хоть у кого-нибудь работает все «из-коробки» без обработки напильником, терзания саппорта и дрочева с настройкой?

    .

    Reply
  12. Agema

    xtreme: кто там говорит, что у Windows цена высокая и работает не так… Или Linux допилить никак не могут, занимаясь им JustForFun и его приходится допиливать руками. Вы на 1С посмотрите. Тысячи программеров по всей стране бьются над ней уже больше десятка лет в полный рабочий день без сна и отдыха, тратятся сотни и тысячи человеко-часов, куча бабла уходит и на покупку и на сопровождение. Но хоть у кого-нибудь работает все «из-коробки» без обработки напильником, терзания саппорта и дрочева с настройкой?

    Да, с Баша, но в тему!

    Reply
  13. CheBurator

    (12) я — первый!

    Reply
  14. gena_danil

    Лет 10 назад работал в фирме… Прохожу как-то мимо одной девочки, что-то усердно вводившей с клавиатуры. Смотрю в экран, внутренне давлюсь от смеха… Деваха в Excel вводит в колонку (ручками!!!) числа типа 5461242, 5641243, 5641244… На всякий случай уточняю — типа это натуральный ряд? Ответ — «да, ваучеры нумерую для акта». Показываю, как это сделать одним движением мыши…

    Реакция потрясла: деваха хватается за сердце: «У меня сейчас будет инфаркт, я год жизни на это убила!!!!!»

    Reply
  15. vova56

    Пошутим также на тему программиста и его поисков удаленной работы … менеджеров в базе.

    Reply
  16. solo-user

    Все — типа взрослые и как бы даже люди, а материтесь, как в детском садике малышки. Грустно, программеры! Элита, блин.

    Reply
  17. venger

    (16) Русь аршином не измерить …

    Американские ученые, проанализировав статистику боев с японцами во Второй мировой войне, обнаружили, что, несмотря на равенство сил, войска США побеждали чаще. Причину нашли в длине слов английского и японского языков. В английском языке средняя длина слова составляет пять букв, а в японском — тринадцать. То есть пока японцы еще ставили боевую задачу, американцы уже начинали стрелять. После этого в американской армии был введен обычай давать короткие названия (клички) как своей боевой технике, так и технике противника.

    Когда эта информация дошла до русских, то они вычислили среднюю длину слова в русском языке, которая оказалась равной семи буквам.

    Однако проведенные полевые исследования показали: в процессе управления боем командир автоматически переходит на мат и информативность речи возрастает в два-три раза.

    Reply
  18. Altair777

    > 16. solo-user 05.11.2008

    > Все — типа взрослые и как бы даже люди, а материтесь, как в детском садике малышки. Грустно, программеры! Элита, блин.

    1) Разве кто-то матерился?

    2) А вот из-за этого «и как бы даже люди», можно и вправду пнх услышать.

    Reply
  19. Шухер

    Подборка и количество плюсов показательна, низкопробная попса прокралась и в умы интеллектуалов.

    Друзья, почитайте классиков, э-э-э- … к примеру … Зощенко, Чехова, Ильфа и Петрова, Джерома … думаю, вам станет не по себе от сравнения с опубликованным выше.

    Зы. За культивирование дурного вкуса и размножение ненормативной лексики минус автору.

    Reply
  20. venger

    (19) Читали и что? Одно и тоже читать все время — это патология…

    Испачкацца боитесь, интеллигент? Все что естественно — не безобразно и имеет право на жизнь, а закрывать глаза, типа как в совке секса не было — это изврат…

    Reply
  21. venger

    (+20) А чем закончилось «отсутсвие» секса в совке помните? В 90-е шлюхи и бляди были на каждом углу. А это были бывшие комсомолки и пеонерки… Так что делайте выводы…

    Reply
  22. venger

    (+21) Чтобы психика была усточийвой надо делать прививки;-))))

    Reply
  23. Шухер

    (20) матрос? 🙂

    Развитие — это когда планку поднимают выше достигнутого, когда её (планку) спускают, это уже не развитие, а деградация.

    Reply
  24. venger

    (23) Пиндос? 🙂

    Выше ниже, все относительно, само направление относительно.

    Ломайте стереотипы!!! :)))))

    Reply
  25. venger

    (+24) Если Вы в состоянии воспринять только одну точку зрения, культуру, юмор — это и есть деградация.

    Многовариантность — это залог развития. В школе плохо учились?:-))))

    Reply
  26. Altair777

    (19) Шухер, ты тоже потерял чувство юмора как твой друг в твоем же http://infostart.ru/profile/794/blogs/224/ ?

    («О потере чувства юмора») ыыыыыыыыыыы ))))

    Вот уж не знал, что эта болезнь заразительна 🙂

    Reply
  27. venger

    (26) Это точно:-))))

    Reply
  28. Шухер

    (24) Примените на практике относительность, считайте мой минус плюсом. 🙂

    (25) Дык кто из нас двоих неспособен воспринимать многовариантность? У нас плюрализм мнений и двух мнений тут быть не может?

    (26) Мимо. 🙂

    Reply
  29. Altair777

    (28) > У нас плюрализм мнений и двух мнений тут быть не может?

    Два мнения быть могут: мое и неправильное 🙂

    Reply
  30. CheBurator

    (19) А другую классику, брат Шухер, кроме упомянутой — не знаем…??? Рекомендую почитать Леонида Ленча

    Reply
  31. CheBurator

    Многовариантность — скажи просто: распизд…во

    Reply
  32. CheBurator

    Хм, когда уже на Баше инфостарт цитировать будут? низка, низка еще у нас постоянная Планка юмора…

    .

    Кстати, что откровенно напрягло в данной подборке сабжа, так это отсутствие упоминаний про шпин…

    Reply
  33. O-Planet

    (32) Ты об этом: http://infostart.ru/profile/180/projects/250/

    Сам удивляюсь! 😀

    Reply
  34. Altair777

    (32-33) Пиаретесь по-тихоньку, товарищи? )))

    Reply
  35. Crush

    Робот с «русским» интеллектом =)))

    Reply
  36. vkr

    (0) +5 — без сомнения !!!

    (35) Ага… Типа анекдота про русского пилота, который на лету шасси ремонтирует… :)))

    2 All : Коллеги, пожалуйста, следите за правописанием — ведь взрослые же люди… Ж8-)))

    Reply
  37. Altair777

    (36) шо? и на олбанском не говорить? 🙂 Это раздел «Юмор», ты не заметил?

    Лично я на баше не был давно — некогда. И я был бы не против почитать избранные цитатки из него.

    Иногда 🙂

    Reply
  38. step73

    ЖИРНО

    Reply
  39. xxtra

    Отличные приколы….смеялся от души!!! Спасибо! Смех продлевает жисть…..Мат можно и не воспринимать…..оцениваю шутку(и) в целом,а не как ее нам преподнесли … «-» автору текста…за ненормативную лексику.

    Reply
  40. uzerdv

    Прикольно, чуть со стула не рухнул. Аж шеф прибежал. 🙂

    Reply
  41. delta_cr

    мы всем отделом поржали

    Reply
  42. CheBurator

    *ЗАКЛАДКА*

    Reply
  43. Михаська

    Автору спасибо, поднял настроение!

    Reply
  44. AruslanM

    Жена просыпается утром часов в шесть и видит картину: в дверях стоит муж в разорванной пополам майке половина волос на голове у него вырвана глаза дикие руки трясутся и глубины его организма постоянно вырывается глухой рык. Она его робко спрашивает:

    — Что милый не получилось?

    — Получилось!

    — Свет ночью выключали?

    — Не выключали!!

    — Не скомпилировалось?

    — Скомпилировалось!!!

    — Не заработало?

    — Заработало!!!!

    — А что же случилось?!

    — На Backspace засну-у-ул!!!!!

    Reply
  45. seakuban

    На остановке стоит программист, мерзнет…Бабулька спрашивает у него — милок, а эта маршрутка идет до стадиона? Программист автоматически отвечает — идет! Вот так уехала бабулька в противоположную от стадиона сторону….

    Reply
  46. a1ex4ndr
    — На Backspace засну-у-ул!!!!!

    нет повести печальнее на свете, чем повесть о заклинившем ресете 🙂

    Reply

Leave a Comment

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