Поэтому представляю на ваш суд код и прошу указать на недочеты и возможные подводные камни.
Преамбула: у нас в организации есть оборудование, установленное в помещении, где компьютеров нет. А информацию по оборудованию получить надо.
Но у работников есть смартфоны! А у некоторых еще и планшеты!
И я подумал, что можно сделать так, чтобы отсканировав код сотрудник попадал на карточку оборудования, из которой бы получил все необходимые сведения - ТТХ, инструкцию или что ещё ему нужно, то есть ту информацию об оборудовании что хранится в базе.
Для генерации кода решил использовать API от Google. Да, понимаю, что если вдруг Гугл закроет API, то я останусь с носом, и лучше бы использовать для этих целей локальный генератор на сервере, но лень.
За основу был взят код от wondertalik из этой темы, а так же кусок отсюда.
В результате получился код, который отсылает запрос Гуглу, получает картинку и кладёт её в базу. Можно, конечно, было бы и не класть картинку в КБ, но дикое количество запросов на генерирование картинок, которое будет выполняться каждый раз при отображении кодов может привести к тому, что, как бы это странно ни звучало, Гугл меня забанит.

Итак, нужно создать поле с типом "Изображение", размером 150*150 (этот размер в соответствии с кодом отдает нам Гугл).
Также, нужно создать вычилсение с условием срабатывания, необходимым Вам (у меня это - сохранение, т.к. массовых сохранений не предвидится, главное - не стОит делать срабатывание на "отображение поля")
//Присваиваем переменной ссылку на просмотр текущей записи.
//Следует учитывать, что символ "&" Гугловский парсер скушает и не отдаст ничего после него, поэтому его следует записать в URL-кодировке как "%26"
$url = "http://base.bing-online.ru/view_line2.php?table=".$table_id."%26line=".$line_id;
//Присваиваем переменной значение, которое отправит запрос на создание QR-кода размером 150*150
$srcImgUrl = "https://chart.googleapis.com/chart?chs=150x150&chld=M|0&cht=qr&chl=".$url;
//Гугл отдает PNG, поэтому явно указываем расширение.
$typeFile = png;
//Гугл не отдает названия файла в удобочитаемом виде, поэтому для генерируемого изображения берем значение ID таблицы и значение ID строки
$nameFile = $table_id."_".$line['ID'].".".$typeFile;
//Удаляем запись об имеющемся (старом) файле
$line['Фото товара'] = "";
//Удаляем имеющийся файл
drop_data_file($table_id, $line_id, $nameFile);
//Удаляем предпросмотр из папки cache
//!!!! Следует обратить внимание, что здесь и далее в коде используется идентификатор поля, в котором будет храниться изображение "QR-код" (11260), и его нужно сменить!
$name_cache_file = "cache" . "/" . $table_id . "_" . "11260" . "_" . $line_id . "_" . utf2eng($nameFile) . ".png";
unlink($name_cache_file);
//Генерируем имя временного файла
$file_hash = get_file_hash($field_id, $line_id, $nameFile);
$path_tmp_name = "temp/" . $file_hash;
//Создаем дескриптор по указанному файлу.
$fp = fopen($path_tmp_name, 'w+');
//Качаем файл по ссылке.
//PHP должен быть с поддержкой curl, иначе словим ошибку!
$ch = curl_init($srcImgUrl);
curl_setopt($ch, CURLOPT_FILE, $fp);
$data = curl_exec($ch);
curl_close($ch);
fclose($fp);
//Определяем путь к загружаемому файлу в КБ
$file_path = get_file_path(11260, $line['ID'], $nameFile);
//Создаем необходимую структуру директорий
create_data_file_dirs(11260, $line['ID'], $nameFile);
//Копируем скаченный файл
copy($path_tmp_name, $file_path);
//удаляем временный файл
unlink($path_tmp_name);
//Перезаписываем изображение, хранящееся в поле "QR-код"
$line['QR-код']=$nameFile;
// Формируем предпросмотр изображения в папке cache
$cur_line = $line;
$cur_table = $table;
$cur_field = get_table_fields($table);
$cur_field = $cur_field[11260];
$t = form_display_type($cur_field, $cur_line);
Дальше планирую создать шаблон, по которому будут печататься этикетки с QR-кодом и инвентарником оборудования. Печатаем на липкой бумажке, и клеим на нужный аппарат.
Еще раз напомню, что я "не настоящий сварщик"©, и буду рад замечаниям и предложениям по оптимизации и универсализации кода.
Сообщение отредактировал Илья: 21 Август 2015 - 20:21