<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Не работает… Выводит одну тумбнайлку всего из каталога…
если вдруг надо — посмотри у меня в профиле по прграммам и блогам — там есть мелкие обработочки по всяким «картинкам»
выводит только .jpg
Что-бы выводила все возможные типы файлов нужно строку 35 заменить на:
Показать полностью
Извиняюсь был косяк, при повторном запуске без закрытия формы выводилось то-же что и при первом. Поправил.
Катер не катит! Суши весла!
вот у меня, например, Прав(Ф,4) возвращает «.JPG»…
Предлагаю покурить кастанеду и расширить границы сознания… вместо офигенной длины условия предлагаю писать коротко и кузяво:
Вариант1:
Показать полностью
плюс надо иметь в виду: расширения могут быть не обязательно 3-х символьные…
tiff, jpeg — вполне легитимные названия
//
вариант2
Показать полностью
по поводу (1) — это я видимо лажанулся — у мну в каталоге всего одна картинка была….
+ отстойно выводить все в один столбик.. нет бы расположить шахмакой…
Главная идея вывести картинку, а какие расширения использовать и как располагать картинки, и выводить ли имена файлов — это уже дело техники и вкуса. ИМХО
Идею использовал для вывода картинок, прикреплённых к элементам справочника в прайс-лист, а обработку сляпал на скорую руку для иллюстрации идеи.
ПС: 1с различает верхний и нижний регистр в имени файла, и для учёта всех возможных вариантов придётся дублировать расширения в верхнем и нижнем регистре или преобразовывать имена файлов в один из регистров…
Предпочитаю помещать картинки в Эксель, эффективно выводить пакет лицензий для алкоголя, можно контролировать, кому эти лицензии уже выданы и когда
(8) а зачем юзера грузить этими проблемами? если обработка для юзера — то оценка на троечку — неудобно….
если для прога — то на единицу….
Вижу, fixin, решил заценить разработки своих доброжелателей.
Посмотрим, что из этого получиться.
У ГЕниЯ такой способ поиска новых партнёров. Видать тем 89 он уже давно надоел.
2 (13)
Вместо того, что бы умничать, и поганить чужие ники, лучше бы ответили на 11.
14. А шобы было. А по разумному, пятниццо уйдёт, будет по делу.
(11) Мне нужна была такая программулина для того чтобы все фотографии из каталога пакетно распечатать. Писать самому было влом, поэтому по одному распечатал. Клиенту одному делал подобную штуку, только там одну фотографию нужно было выводить на печать. У них там схемы были нарисованы. Так что вещь полезная. Редко конечно, но могут такое нестандартные клиенты заказать.
14. Во-первых, про что в (11) вопрос. Если про обработку — то специально для слабовидящих из (8)Идею использовал для вывода картинок, прикреплённых к элементам справочника в прайс-лист, а обработку сляпал на скорую руку для иллюстрации идеи.
Во-вторых, насчёт поганить чужие ники — это я ещё по божески. Для иллюстрации прошу обратить внимание на коменты к последним 15-20 идеям идеягенератора. И насчёт умничать там-же.
Ээххх когда же поиск то заработает у людёв ?
http://www.mista.ru/articles1c/hare/article.18.html
(18)» — Ну не шмогла я, не шмогла.» с.
Ёпрст прошу Вашего разрешения добавить найденную Вами ссылку в описание обработки.
(20) мне то что, это не мой код .. 🙂
Это
Никита Зайцев (WildHare) где-то в 1999
Хотя этот способ был известен и раньше …
Просто всегда находились люди и записывали полезные вещи где-то…
🙂
21-23 Согласен, очередной велосипед получается. Доказать нечем, но после безрезультатного поиска использовал только ЖКК…
А насчёт поиска по Инфостарту, был бы поиск и по форуму, таких велосипедом на порядок поуменьшилоль бы 🙁
Ободрялка тебе.Небось проблы со скачкой 😉
Да идея не нова, но когда мне понадобилось, нашел только тут. Так что спасибо.
Спасибо. Помогло