<?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='\
а куда пропали бонусы из 8.1?:)
Какие бонусы?
а куда пропали бонусы из 8.1?:) Выглядит неплохо, жаль 8.2 под рукой нет.
(0) помниться в универе на парах игрались в такую…, только на тетрадных листах в клетку :)))
Много глюков
(5) Монитор включать в розетку пробовал? 🙂
(6) Раз уж выложил игруху — так доведи ее до ума.. остряк
(7) Раз хочешь что-то сказать, то говори, чтоб тебя понимали. Какие запросы кидаешь, такие ответы и получаешь, умник…
У меня всё работает.
А вот современная версия Циферок! В ней в дополнение к классическому варианту, есть еще и несколько новых типов игры и дополнительные возможности. Мне очень понравилось:http://udigits.com/
обожаю эту игру…
помнится даже один раз закончил её с минимальным количеством строк, толи 6 толи 7, уже не помню…
правда вот как это сделал — тоже не помню и даже сразу после такого выигрыша не смог уже повторить его (((
немного тормознуто всё проделывает, но на работе спешить некуда, поэтому не так это и страшно…
жаль конечно что на тонком клиенте сделано, пришлось пустую базу разворачивать специально для него, но все эти небольшие недочеты никак не влияют на удовольствие поразмыслить как бы лучше удалить пары, чтобы закончить с минимальным количеством строк…
хороший плюс — есть история ходов аж с самого начала — можно вернуться на спорный вариант…
(10) PanKir, у меня есть сейв, где я выиграл за 10 ходов. Давно уже не играл, но, кажется, меньше не получалось…
(11) PanKir, Это был мой первый опыт работы с управляемыми формами, так что вполне возможно, что где-то сделано не оптимально… 🙂
(12) ну может и 10, я уже не помню…
недавно сделал за 11 кажись, но не сохранил 🙂
(13) ну я вообще пока боюсь к тонкому клиенту подходить… как-то решил на фри-лансе сделать задание, так только красивую оболочку сделал и на этом застопорился…
так а для толстого клиента вариант игры есть? ну или хотя бы может в планах?.. :-[
(14) PanKir, всё равно все перейдут на управляемые формы, вопрос времени.
А игру под обычные формы я уж точно переписывать не буду, т.к. времени совсем нет, да и смысла особого не вижу 🙂
Я под УФ-то написал только потому, что хотел получить опыт в управляемых формах, а два года назад реальных задач под УФ вообще не было… Вот и пришлось придумать себе задачу)