<?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='\
Прошу прощения, что мешаю зарабатывать мани, но там же несколько строк.
Показать
(1) webester, зарабатывание мани не является моей основной целью. Так что нет, не мешаете. Кажется странным, что вместо того, чтобы оформить свой код в публикацию, вы пишете его в комментариях к чужой публикации.
Теперь по существу. Вы часто ищете штрихкоды на этом сайте? С какой целью — проверить существующие в вашей базе товары или добавить новые? Имеет смысл добавить в обработку поддержку API и попробовать пообщаться с хозяевами базы на тему «дайте тарифы попроще и с оплатой не через сбербанк»? Создание номенклатуры по найденному стоит добавлять?
Эти вопросы ко всем читающим, кстати )
(2)
Мне показалось излишним делать публикацию на каждые 10 строк кода. Слишком простая штука. Поэтому добавил когда увидел ваш пост, раз вы все таки сочли нужным делать для этого пост. Мне кажется вам надо было сразу выкладывать код, раз вам не нужны мани.Что бы мог воспользоваться любой даже без аккаунта на ИС.
Нет.
Запускаю работающую аптеку, неохота руками все набирать. по макс убрать ручной труд, насколько возможно. Будем искать названия в файлах поставщиков, если не найдется, то в базе, если и там не будет, то наберет фармацевт название ручками.
Вам виднее, но мне кажется добавлять апи которое работает с апи, какой то перебор.
Слишком щепетильный вопрос, для аптеки критичен производитель, для вас наверно нет, где то должны характеристики заполняться, а к ним уже штрихкод, где то не должны. В разных конфигурациях по разному это должно происходить, если вам хочется этим заниматься, то почему бы и нет? Я честно сказать практический смысл нахожу с трудом. Кому надо тот себе напишет, а кто не может, может заказать за недорого, создание номенклатуры опять же несколько строк кода если под конкретное решение.
(4) webester, Согласен, исходники выложил.
(4) webester,
Если не секрет, что вообще в этом случае предоставляют поставщики? Прайсы, накладные, CommerceML? В моем представлении, фармацевтика — достаточно прокачанная отрасль в плане IT.
речь шла о том, чтобы запрашивать инфу о товарах не парсингом страниц, а через предназначенный для этого API. Это может пригодиться при необходимости запросить 50-100 и больше штрихкодов (у меня капча вылезла примерно после 50 запросов). Вам действительно ни к чему, если редко туда ходите.
(6)
Кто, во что горазд. txt, xls, xml последнее прилетело в html.Какой то бред честное слово.Настолько все строго с этими ценами, условиями и тд такой бардак в поставке накладных.
Добрый день.
Как представитель ean13.info, добавлю от себя:
1. Тарифы попроще у нас есть, для тех кто берет доступ оптом, существуют скидки. Если нужно меньше чем 5000 запросов — пиште, договоримся.
2. Мы реализовали обратное АПИ. Теперь, при передаче нам данных о товарах, которых у нас нет , вы получаете бесплатные запросы к базе (1 новый товар = 10 бесплатных запросов).
Ну и похвастаемся: размер базы приближается к 10 млн. товаров.
Новости на всякий случай:сайт ean13.info перешел на https.
http://ean13.info/4600171016044.htm
По запросам вроде
возвращается текст:
<!DOCTYPE HTML PUBLIC «-//IETF//DTD HTML 2.0//EN»>
here .</p>
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved
</body></html>
Соответственно, функция ПолучитьФайлHTTP потребует изменения в способе создания http соединения: должно быть создано безопасное соединение. Параметры конструктора объекта, насколько я помню, различаются в платформах 8.2 и 8.3, также могут потребоваться танцы с бубном вокруг сертификатов.
Увы, заниматься всем этим времени нет.