Грибочки (по мотивам Boulder Dash) для 7.7 без ВК !




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

38 Comments

  1. Ёпрст

    И хде картинки?

    Reply
  2. Altair777

    (0) Если вставила игра — кидайте бабла! 🙂

    Грибочки они, конечно, могут вставить. Особенно, если выращены в Голландии 🙂

    Reply
  3. Ёпрст

    (2) у нас тоже хорошие растут..

    🙂

    Reply
  4. Altair777

    Плюсик поставил. Авансом. 🙂

    Что бы стимулировать рисование новых уровней 😉

    Reply
  5. coder1cv8

    Класс! Хде только клюшки взять что бы посмотреть? ) Делал бы тогда уж внешним приложением…

    Reply
  6. Altair777

    (5) «Где взять, где взять?… Купить!» 🙂

    Reply
  7. ssp_

    Сила!

    Только в оригинале была удобная фича — шифт+стрелочка выхватывает объект с соседней ячейки без перемещения.

    Даёшь редактор уровней!

    Reply
  8. Ёпрст

    (7) легко сделать…

    Редактор уровней есть в виде залипухи… Для выкладывания сыроват. Ну не руками же я уровень рисовал ! :))

    Reply
  9. Ёпрст

    Обновил версию…

    Теперь Картмен может бегать независимо от падения шариков..

    Reply
  10. Ёпрст

    Добавил бомочки..

    Reply
  11. oleg974

    Скоро чувствую дойдем до стратегий.

    Reply
  12. Ёпрст

    (11) Давно уже есть…

    И квесты тоже..

    Reply
  13. oleg974

    Вах! А «сцылко» есть живая? Очень посмотреть хочется. Заранее благодарен.

    Reply
  14. Ёпрст

    (13) в профиле моём смотри, там есть сборник игр, даже герои есть,

    а квест, тут есть:

    http://kvest1c.narod.ru/

    Reply
  15. Ёпрст

    Обновил версию.

    Тестируем..

    И это, чего бобла то никто не кинул ?

    🙂

    Reply
  16. Ёпрст

    Граждане, пока не качайте …Редактор уровней выйдет сегодня скорее всего, ближе к вечеру… В обновленной версии.

    Reply
  17. Ёпрст

    Вышел редактор уровней.. качайте — рисуйте сами…

    Reply
  18. zaic

    Хорошая игрушка, спасибо. Давным-давно играл в такую и почти все проходил.

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

    Reply
  19. Ёпрст

    (18) потом сделаю автонастройку скорости…

    (19) Та ладно ? Начиная с Supaplex есть куча на PC

    Самая продвинутая на данный момент — safrosoft Rox

    (20) Нет там обработки ожидания

    Reply
  20. andrewalexk

    (15)

    :))

    ну откуда у адинэсников дэньги..

    мы бедные…

    у нас кризис..

    Reply
  21. Ёпрст

    (22) Это, типа теорему БЖС все подтверждают ?

    🙂

    Reply
  22. andrewalexk

    (23)

    :))

    НВЯПНЗЧТБЖС

    Reply
  23. Ёпрст

    Одного непонятно, чего все качают старые версии ? 🙂

    Ну нет чтоб уровень прислать, али об ошибках написать…

    Reply
  24. Lars Ulrich

    супер 🙂 прям ностальгия по игрульке Boulder

    +мульен аффтару

    Reply
  25. zaic

    Кто хочет плюсов — рисуйте уровни!

    Reply
  26. Ёпрст

    (27) Не, мне лучше монеткой выслать:)

    Reply
  27. motogon

    О, тоже клас!

    Reply
  28. Greymem

    Браво!

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

    Нашёл тебя тут: http://www.forum.mista.ru/topic.php?id=384578

    Пришёл по этой ссылке…кстати в теме ведётся разговор о моей игрушке:

    Tactical 1C v1.3

    Не понимаю, что там непонятного кстати, или было непонятное =)

    Вообщем всё суперско сделал

    Ужажаю!

    Reply
  29. codmal

    Очепятка в предисловии: не Boulser, а Boulder.

    Reply
  30. Styvi

    Хорошо сделано… маладца… (как всегда, впрочем)…

    Reply
  31. Rockman

    Прямо как в детстве Boulder Dash.

    Reply
  32. v.l.

    написана на 1С или только обёртка для очередной скопип.. флешки?

    Reply
  33. Ёпрст

    (34) целиком на 1с без ВК

    Reply
  34. Мичман Харитонов

    Обнаружил забавный глюк.

    Если при запуске на компе есть открытая аська, оно разворачивает окно аськи, и в поле поиска начинает гнать много-много букв «л». 🙂

    Reply
  35. Ёпрст

    (37) это из-за посыла сендкея..

    Reply
  36. Мичман Харитонов

    Оно в принципе поддается лечению?

    Я бы на досуге попробовал пофиксить, потому что аська пока что нужна 🙂

    Reply
  37. Ёпрст

    (39) да забороть то можно, скрой аську в трей..

    Посыл сендкей идёт в активное окно, надо просто, чтоб 1с-ина всегда была «главнее»

    Reply
  38. Darklight

    Крукто! Любимая тема. Но хочу такую же под 8.x (естественно не на УФ)

    А то по 7.7 уже давно не работаю и не имею 🙁

    Reply

Leave a Comment

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