Новый функционал: Мои действия




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

53 Comments

  1. alexk-is

    Может стоит убрать из списка на голосование собственные материалы автора?

    Reply
  2. larisab

    «Если Вы не комментировали, то будет отображена пиктограмма-ссылка для комментирования.»

    Комментарием считается (0)? Комментировала, но без ссылки на 0, а показывает что не…

    Reply
  3. Трактор

    Прикольно. Не так много я и скачал, оказывается. 88 штук. Неголосовал примерно за половину — за 42 штуки.

    Reply
  4. Арчибальд

    (3) 400 скачиваний 😮

    Reply
  5. Душелов

    244 скачивания, 312 рекомендаций (+ и -) и 6661 комментариев 😀

    Reply
  6. larisab

    480 скачиваний, 338 оценок, 2835 комментов… ух… ну и болтуууша…

    Reply
  7. Душелов

    (6) Фи, я — круче! 😉

    Оценил больше, чем скачал… Ну а болтушка тут — я! 😉

    Reply
  8. larisab

    Ты старше 😉

    Reply
  9. Душелов

    (8) Смотря с какого времени отсчет пошел! 🙂

    Reply
  10. larisab

    Ты старше 😉

    На год!

    Reply
  11. support

    (1) ок, пропустили этот момент.

    (2) пример можно?

    Reply
  12. larisab

    (11) Вот здесь:

    Reply
  13. Tatitutu

    кстати картинка 1 супер — сразу в глаза бросилось

    МОИ СКАЧИВАНИЯ — и внизу синим ОТПРАВКА SMS — думал ….(но понял)

    енто все хорошо….очень хорошо

    но теперь нужно мааааааааааааааленький рычажок

    для чего — для того , что в эту закладку заглянет 1 из 10 000

    (другие или не знают или времени нет или не хотят)

    вот тут то и возможны варианты: я их уже 100 раз предлагал

    (скачал 10 обработок — нет коммента нет + или — идем на эту вкладку и вспомнинаем , что пригодилось а что нет) вот тогда дело будет !

    или приставку к нику ЖАДИНА-ГОВЯДИНА, КАЧОК НЕБЛАГОДАРНЫЙ... 😀 ,ЩЕДРАЯ ДУША…и.т.д.

    Reply
  14. dobraleks

    а как быть если я прокомментировал, а у меня все равно стоит значке «что нужно прокомментировать»???

    Reply
  15. СергейКа

    Заметил эти изменения еще вчера 🙂

    Но так же как в (1) и (2).

    Специально проверял по скачанным публикациям — в некоторых комментировал ранее, но не отразилось. По-моему, попадались даже плюсованные, но с отметкой что ничего не ставил.

    Сейчас ссылки не укажу, но если потребуется — покопаюсь.

    Reply
  16. vip

    Почему постоянно звучит «кач» (забыл, как часть речи называется).

    Сразу возникают ассоциации с машиной с таким толстым гофрированным шлангом (может молодежь не помнит такие).

    Да простит меня ув. Суппорт, для меня образцом действительно профессионального общения до сих является 1cpp.ru.

    «Кача» практически нет сейчас, а вот пообщаться действительно интересно.

    А здесь перенумератор до сих пор называется Программой, а мутные тягучие рассужденя о сферическом коне в ваккуме — Статьей.

    Reply
  17. larisab

    (16)

    «кач» (забыл, как часть речи называется)

    Корень называется )))))

    Reply
  18. AVARY

    Может стоит сделать информацию о действиях общедоступной?

    Reply
  19. support

    (18) Зачем? Кому интересно, что качал другой человек?

    Reply
  20. larisab

    (19) Интересно не что качал, а что говорил!

    Reply
  21. MaxDavid

    Только у меня некоторые мои комменты по два-три раза дублируются? Причем в одном дубле ссылка на форум, в другом — в public. И если во втором случае я перехожу по ссылке без проблем, то на форум меня не пускает — требует авторизации… снова и снова… 🙁

    Reply
  22. CheBurator

    (16) когда конфига-репозитарий обновляться и поддерживаться в акутальном состоянии будет? 😉

    Reply
  23. RayCon

    (21) +1

    Идёт дубляж. 🙁

    Reply
  24. vip

    (22) Никогда.

    Давай еще раз попробую объяснить.

    Здесь учат качать, а там учат думать.

    Ты продолжаешь путать цели того портала и этого.

    Очень разные цели получились.

    Reply
  25. marsohod

    (0)(21)(23) Подтверждаю. У меня дублирование началось с шестой страницы моих комментариев (по 20 на стр.).

    Reply
  26. CheBurator

    (24) ok, тогда попробуй объяснить — так как я, возможно, не понимаю: каков смысл в добывании глины, обжиге кирпича, выкладывании стенок с мастерком в руке, потом штукатурении — кроме как морального удовлетворения от осознания того, что я сам это все умею делать? — если лучше всего я умею штукатурить стены? как хобби — да, я с удовольствием буду мять глину, лепить кирпичи — но хобби не прокормишься… а сделать шедевр в единственном экземпляре и повесить его в музей — чтобы прошли мимо, повосхищались — как сделано красиво, да!… — как-то не штырит получить признание спустя 20 лет после смерти.. 😉

    Reply
  27. CheBurator

    (24) может кто-то и качает тут тоннами, но явно не я… ибо кирпичи тут все одинаковые… а шедевров — единицы… вот и качнул для своего собственного «музея» несколько штук всего….

    кстати.. надо будет «ревизию» провести — что я тут полезного скачал? и что полезного взял там… интересненько должно получиться…

    Reply
  28. СергейКа
    а сделать шедевр в единственном экземпляре и повесить его в музей — чтобы прошли мимо, повосхищались — как сделано красиво, да!… — как-то не штырит получить признание спустя 20 лет после смерти..

    «Что бы попасть в криминальную хронику -надо убить кого-нибудь на прошлой неделе. Что бы попасть в новости искусства — нужно умудриться сделать шедевр в прошлом столетии» ©Прокопович Александр, Спецназ Лысой горы, подготовлен к печать в 2010 году 🙂

    Reply
  29. marsohod

    +(25) а закончилось на восьмой…

    Во-о-о-т…

    А в целом — спасибо 🙂

    и за снегурку тоже

    Reply
  30. vip

    (26) Попробую объяснить.

    Сравнение ты привел не совсем верное.

    Там — скорее архитекторы, а здесь в основном бригады каменщиков.

    А в большинстве даже строителей унылых панельных девятиэтажек.

    И те, и другие нужны.

    Но мне почему-то больше нравится быть архитектором.

    А насчет прокормиться…

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

    Если продолжить аналогию, то ты крепкий, грамотный бригадир.

    Или скорее мастер.

    Но не архитектор.

    Reply
  31. artbear

    (0) Вот только что посмотрел свои скачивания.

    Выбираю только «комментировал» и получаю 0.

    Это явная ошибка сайта 🙁

    Жду исправления.

    Reply
  32. Ish_2

    (30) Мне ближе и понятней (26).

    К архитекторам отношусь сочувственно. И снисходительно.

    Ах ,ну да… Конечно , интересно.. Но среди каменщиков — веселей , уверяю тебя.

    Здесь сайт каменщиков — в своих претензиях ты всё время об этом забываешь.

    И никаким другим этот сайт быть не может.

    Смущает только одно : искусственное выталкивание с сайта архитекторов , пусть и неявное.

    Reply
  33. vip

    (32) Да нет у меня никаких претензий, И назначение сайта прекрасно понимаю. О чем и сказал.

    ЗЫ. Твое «живое» общение с Шепотом даром не прошло.

    Мысли излагаешь все мутней и тягучей.

    Reply
  34. Ish_2

    (33) Учту.

    Reply
  35. Abadonna
    что он скачал

    Интересно, картинка к каким действиям призывает? 😉

    Reply
  36. Abadonna

    (32)

    Но среди каменщиков — веселей

    Ага, ты еще скажи среди «вольных каменьщиков», а потом плавно переходим к среди…

    Reply
  37. Abadonna

    (0) Доржи, а ты как-нибудь отфильтровывай, когда качаешь свои.

    Глянул в «Мои скачивания», процент не стал определять, но до фига моего же, скаченного мной же

    Reply
  38. larisab

    (36) Ага, та же ассоциация… вольными каменщиками в местной интерпретации будут фрилансеры, если продожить…

    «ротшильды» тоже наметились, вроде…

    Reply
  39. larisab

    Возникает вопрос, опять о рейтингах… Существует 3 вида условного рейтинга:

    1. для платных программ,

    2. для пользователей,

    3. для свободного скачивания.

    Количество плюсов обратно пропорционально этой последовательности.

    Качество чаще всего — прямо пропорционально (не во всех случаях).

    Не пора ли вводить поправочные коэффициенты?

    Reply
  40. MRAK

    Доржи, респект, развиваешь портал!

    Reply
  41. antonds

    (12), (14), (15), (31) ошибка поправлена, теперь корректно проверяется комментировали ли вы.

    Проверьте, пожалуйста.

    (37) Теперь фильтруется.

    Reply
  42. antonds

    (21), (23), (25), (29), дубли убраны. В связи с этим могли уменьшиться количества сообщений у всех. Это правильно.

    Reply
  43. sound

    доступ к файлу будет определяться в зависимости от активности пользователя

    Где-нибудь об этом поподробней уже написано? А то активность она много от чего зависит. Того и гляди щас как начнут «резать» всех только за НЕголосование и НЕкомментирование. А ведь бывают и таких публикации когда думаешь, что «вот оно», а скачиваешь и оказывается не «оно», а уже получается, что скачал, а все из-за того, что не было нормального описания или ты его не так понял. И вроде и комментировать тут нечего, и минус просто так ставить как то нехорошо (разве что за плохое описание, если оно плохое). На ум приходит только кнопка «закачать обратно» 🙂

    Reply
  44. AVARY

    Рейтинг разработки «Закачали обратно» — это мысль! 😀

    Reply
  45. Tatitutu

    Согласен с (43)

    — Скачала файл с интернета, а он мне не нужен, как вернуть на место (с)



    но вопрос глобальный из 89573 пользователей зарегистрированных на сайте только 1345 (1,53 %) выложили свои разработки (имеют хотя бы один + за программы)

    так вот если 98 % пользователей портала все эти рейтинги + и — глубоко по ….ну вы поняли.То зачем им ставить Вам + или писать комментарий

    им от этого ни холодно ни жарко. У них одна цель — зашел — нашел — скачал — ушел. Вот их то мы и теряем.

    Вот например , когда то было введено условие за 30+ за свои разработки можешь качать и качать без ограничений, а если пользователь не разработчик — чем он «виноват» может и им предоставить за 100+ за комментарии в разработках — такой же статус — все же какой то стимул.

    Так мысли вслух.

    Reply
  46. 12345678999

    ну вот очередной рейтинг балобольности 😀

    лучше тогда уже немного по другому — хочешь скачать, пусть проголосует «+-» или еще лучше заставить после скачивания поставить 5бальную оценку для возможности скачать в следующий раз. тогда будет средняя температура по больнице 😀

    Reply
  47. СергейКа

    Еще немного:

    1. В списке скачанных присутствуют разработки, которых уже нет на сайте — удалены по каким либо причинам. Нельзя ли их убрать?

    2. Есть разработки, которые ну просто не хочется как-либо отмечать или комментировать. По сути как в (43). Можно ли, например добавить какой-нибудь реквизит такой разработке и поставить фильтр что бы их потом не показывать?

    Reply
  48. support

    (47) 1. Исправили.

    2. Только прокомментировать.

    Reply
  49. scape

    Да, хозяев сайта похоже начала мучить мания величия. Уже не знают, что еще придумать. Зачем комментировать всякий берд и выставлять плюсы или минусы всякому бреду который в основной массе здесь вываливается, типа игрушек и проигрывателей музыки и фильмов на платформе, или за пространные рассуждения, типа как достать заказчика . Ведь плюсы ставят за что то подобное или публикации о том как исправить тривиальную ошибку в подготовке сведений в ПФР. Печалит то, что все хорошее в очередной раз превращается в «хотели ка лучше, получилось как всегда». Складывается впечатление, что просто это менталитет программистов 1С. Обязательно необходимо устраивать какие то рейтинги, получать сертификаты и т.д. Короче бог вам судья.

    Reply
  50. Душелов

    (49) Согласен. Зачем все эти рейтинги, когда можно просто брать деньги за все.

    Reply
  51. scape

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

    Reply
  52. chev

    Вводя подобную регистрацию, с высосанными из пальца рейтингами, вы, на мой взгляд, гробите на корню хорошую(основную) идею сайта — это возможность использования коллективного разума для профессионального роста. Большинство людей заходят к вам на сайт для того, чтобы найти нужную идею и использовать ее в повседневной работе. Последнее время появляется все больше коммерческих разработок. Мне кажется, уже пора для них организовать отдельный блок, а не валить все в одну кучу. Хозяевам сайта, неплохо бы ознакомиться с подборкой комментариев и призадуматься о дальнейшем пути развития сайта, а то так недолго и потерять рейтинг своего сайта. ❗

    Reply
  53. ignor

    Хорошо бы возможность посмотреть чужие рекомендации. Тогда могут образоваться активные авторы рекомендаций которые могут дать рекомендации по своей теме, например инструменты разработчика

    и тд. Кто-то хорошо разбирается в ЗУПе и будет освещать интересные материаалы по ЗУПу. И тому подобное.

    Reply

Leave a Comment

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