Главная страничка Инфостарта




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

55 Comments

  1. Olga_siberia

    по моему скромному мнению идея не плохая,но думаю,что не все пожелают показать свои личика,просто посмотрите какие есть аватары со смеху умереть,весь животный мир и не только…

    Reply
  2. Душелов

    Идея здравая.

    Reply
  3. Душелов

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

    Reply
  4. Olga_siberia

    блин скрин так и не открылся….

    Reply
  5. O-Planet

    (3) Список разработок лучше, ага. Основных у автора.

    Reply
  6. Altair777

    (1) это про меня? 🙂

    (0) чьи лица будут на левой части? особо избранных?

    Reply
  7. tsd

    (6) нет, тех кто 50 руб. заплатит :). Che будет висеть вечно, он готов аж 200 выложить

    Reply
  8. Altair777

    (7) И что получится из ресурса? Рекламная фирма?

    Reply
  9. Olga_siberia

    (6)конечно,как я про тебя забуду..

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

    Reply
  10. Altair777

    (9) спасибо, милая 🙂

    Самые популярные в каком смысле? Больше всех плюсиков собрали?

    Или за последнее время? А вдруг там окажутся похожие разработки?

    Типа 2-3 перенумератора 🙂

    Reply
  11. O-Planet

    (6) // чьи лица будут на левой части? особо избранных?

    Читать умеем? Или только комментировать? «… собираем галерею разработчиков … Ставим скрипт слайдшоу, который крутит фотки с некоторой периодичностью». Фотки у многих уже в профайле есть. Если у человека есть собственные разработки, их оценки (скажем, рейтинг от 30-и, и разработок более 3-х, но все обсуждается), то он — разработчик.

    Reply
  12. O-Planet

    (10) Позиция в корне не верна. Перенумераторы <> плохие разработки. Стоит войти на страницу любого перенумератора и почитать комментарии. если люди их ищут, скачивают, используют и благодарят за это, то почему это — плохие разработки? То, что оно — не ВК, не требует Net-технологий или Formex? Для особо продвинутых можно сделать ВК-перенумератор, на Net, с окном запуска, оформленным с помощью Forex 🙂

    Reply
  13. Altair777

    (11) мы читать умеем, т.е. это я про себя

    (0) > собираем галерею разработчиков

    кто? по какому принципу?

    В шапке только это написано. А не надо теперь говорить, что я должен был сам догадаться

    Внеси имзенения в шапку

    Reply
  14. Altair777

    (13) Причем здесь это?

    Ты читать умеешь или только писать?

    А вдруг там окажутся ПОХОЖИЕ разработки?

    ПОХОЖИЕ — вот ключевое слово

    Reply
  15. O-Planet

    (12) Просто в шапке речи не шло вроде об избранности, если речь идет о сайте сообщества, то избранность тут не уместна. А принцип отбора сформулировать я не берусь. предложил в 11 то, что мне кажется правильным, но надо обсуждать.

    Reply
  16. Altair777

    (14) > если речь идет о сайте сообщества, то избранность тут не уместна

    С этим согласен.

    Reply
  17. O-Planet

    (15) Ну и пусть 🙂 От всего не защитишься. Знаешь, когда плохая прическа у блондинки бросается в глаза? Когда она ее поправляет каждую секунду.

    Речь идет о платных разработках в магазине. Они УЖЕ там есть. Не знаю, имеются ли похожие, не смотрел. Но вот ты написал, и я загрузился 🙂

    Reply
  18. Olga_siberia

    все-таки плюсование и кол-во скачиваний-это показатель надобности и качества разработки,думаю это и есть критерии отбора….

    Reply
  19. Altair777

    (17) Про блондинок это ты зря… Придет Торпедо и расстроицца 🙂

    Reply
  20. Altair777

    А вообще речь не об этом. А о (0)

    Мне нравицца 🙂

    Reply
  21. O-Planet

    (19) Вот незадача… Мде… Надо чо-нить срочно написать хорошее про блондинок, пока ее нет, или конструктивное предложить… Например, пункт меню «Если ты блондинко». Это чтобы сразу загружался Promt, когда она будет писать комментарии… :))

    Reply
  22. larisab

    (0) А Душелов то,оказывается, блондин!! Так что вы поосторожнее с цветом волос и прическами, скоро пирсинг в ход пойдет!!))))

    Reply
  23. Olga_siberia

    ох-рассмешили….

    Reply
  24. Altair777

    (21) Промт? А в него уже встроили блондинко-человеческий словарь? Вау!

    (22) Есть разница между «блондин» и «блондинка» 🙂

    Вася чел нормальный, не обидится, имхо.

    Reply
  25. Olga_siberia

    (22) Вот только о пирсинге не надо….больная тема

    Reply
  26. O-Planet

    (25) Смотря на что его делать )

    Reply
  27. Olga_siberia

    (26)И не надо спрашивать где!

    Reply
  28. Altair777

    (27) А про татушки можно? 🙂

    Где?

    Reply
  29. larisab

    сказано же блондинкО ;))))

    Reply
  30. Altair777

    хтО? 🙂

    Reply
  31. Olga_siberia

    (28)А давайте ближе к теме, срочненько убираем зоопарк и выкладываем фото что бы быть в передовиках,так сказать на первой полосе!!!

    Reply
  32. larisab

    (29) к (24)

    Reply
  33. O-Planet

    (24) // Промт? А в него уже встроили блондинко-человеческий словарь? Вау!

    Не, тут проще все. Практика показывает, что достаточно перевести на английский, а потом снова на русский, чтобы можно было прочитать… 🙂

    Reply
  34. Altair777

    (31) ради это не стоит….

    Если меня выберут в передовики — я приготовлю фоточку на Доску Почета 🙂

    Reply
  35. larisab

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

    Reply
  36. Olga_siberia

    (35) эт -то точняк,юмор ит.д.

    Reply
  37. Душелов

    Ну как бы фото с тату могу найти, но как бы это не очень высокохудожественное фото будет 🙂

    А вот пирсинг не уважаю — только проколотые уши у меня.

    Reply
  38. Душелов

    Ну да, я — блондинко 🙂

    Reply
  39. ineoosaki

    (35) вообще-то некоторые авторские статьи на Инфостарте достойны быть размещенными на диске ИТС…

    Reply
  40. Душелов

    (39) Как и разработки 😉

    Reply
  41. O-Planet

    ИТС — это так уж пристижно?

    Reply
  42. Душелов

    Конечно! Предел стремления 🙂

    Reply
  43. ineoosaki

    (41) Олег, у тебя нет таких статей, имхо… 😉

    и у меня нет…

    но такие статьи (методические материалы) на инфостарте есть. Не хочу в них «тыкать пальцем», но думаю многие читали…

    Насчет того — «престижно-ли?». имхо, престижно

    Reply
  44. CheBurator

    общий подход, изложеный в (0) — мну нравится…

    Reply
  45. larisab

    (0) А причем тут футбол?

    Reply
  46. artbear

    (0) Я против.

    Что мы видим на снимке?

    Кучу места занимает реклама или девиз Инфостарта — не гуд.

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

    В первую очередь нужна инфа все-таки о разработках, а как раз им и отведено очень мало места 🙁

    Еще ведь есть не только разработки, но и методические статьи, которые также должны быть показаны.

    В общем, не гуд 🙁

    Reply
  47. artbear

    (46+) К вопросу о рейтингах — вот есть разработка http://infostart.ru/projects/3215

    Признаю, что неплохая, нужная и т.д. — сам воспользовался и плюсанул.

    Но все это только на ближайшее время, до появления новой зарплаты.

    Далее эта разработка совершенно будет не нужна 🙁

    А на текущий момент у нее 206 баллов.

    И что, она так и будет крутиться в списках лидеров??

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

    (46) Информация о разработках, конечно, нужна. Но структурированная, а не в теперешнем виде. Сейчас к примеру, когда мне нужно что-то в конкретной области, я ищу это сначала у популярных авторов (популярных «среди меня», а не по рейтингу).

    (0) Деление на пользователей и разработчиков назрело.

    Reply
  49. Altair777

    (46) Правильно!

    (47) А я уже предлагал в расчетах рейтингов учитывать «срок давности».

    Reply
  50. German

    (49) Срок давности чего? последнего обновления или даты создания?

    Reply
  51. O-Planet

    (46) Нужно исходить из того, на какую целевую аудиторию направлен контент. ты написал с т.зр. программиста все совершенно правильно. Я говорю о потенциальном заказчике: бухгалтера, менеджеры, директора IT, руководители фирм. Для таковых важно показать, что здесь — сообщество специалистов, которому можно доверять, у которого есть большорй петенциал, а не тупой файлообменник. Лица разработчиков, список их работ (позиционируем, как некое достижение), возможность пообщаться — это тот контент, который лучше всего создаст атмосферу доверия и понимания, что тут не случайные люди. Страница ориентирована на привлечение заказчиков и покупателей. Это — всего лишь витрина, призванная привлечь внимание и создать первое впечатление.

    Reply
  52. Altair777

    (50) Хороший вопрос 🙂

    Самое правильное — от даты каждого «плюсика», но это затратно.

    Как-то можно оптимизировать. Например рассчитывать при «закрытии месяца», сколько плюсиков разработка получила в этом календарном месяце.

    А потом считать по коэффициентам. За каждый месяц назад минус 5-10%.

    Например, плюсование этого месяца Коэф=1.00, прошлого = 0.95(0.90), позапрошлого = 0.90(0.80).

    И тогда «старые» забытые разработки перестанут оказывать влияние на рейтинг разработчика. И не будет класса «рантье», живущих за счет времен оно.

    Reply
  53. Душелов

    И будет им место в музее… Наша история…

    Reply
  54. Abadonna

    (52) На, погляди, что такое старые и что такое новые

    http://infostart.ru/projects/1878/

    «Старые» не плюсуют во многом потому, что до них добраться не могут

    Reply
  55. Altair777

    Это плохо. Обновлять надо, развивать 🙂

    Reply

Leave a Comment

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