Инструменты пользователя

Инструменты сайта


doc:1513:643.mgul.15131-01_12_01

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:1513:643.mgul.15131-01_12_01 [2019/06/20 06:11]
deimozzz Каркас
doc:1513:643.mgul.15131-01_12_01 [2019/06/20 11:30] (текущий)
deimozzz аннотация
Строка 1: Строка 1:
-===== Архив, содержащий программный код ​и структуру каталогов веб-приложения=====+====== АННОТАЦИЯ ====== 
 +В данном программном ​документе приведёно текст ​программы ​системы сбора, обработки и хранения результатов измерения (далее система),​ предназначенной для сохранения и предоставления любых наборов переданных данных,​ а в частности – с учебных устройств,​ разработанных на кафедре ПМиВТ МФ МГТУ им. Н. Э. Баумана.
  
-{{ :​doc:​1513:​server.rar |}} +====== ПРОГРАММНЫЙ КОД ВЕБ-ПРИЛОЖЕНИЯ ====== 
-====== Корневой каталог веб-приложения ​======+ 
 +===== Корневой каталог веб-приложения =====
  
 <hidden conn.php><​file php conn.php>​ <hidden conn.php><​file php conn.php>​
Строка 250: Строка 252:
 ---- ----
  
-====== Каталог export ​======+===== Каталог export =====
 {{ :​doc:​1513:​standart_book.xlsx |}} {{ :​doc:​1513:​standart_book.xlsx |}}
  
-====== Каталог core ======+===== Каталог core =====
 <hidden altread.php><​file php altread.php>​ <hidden altread.php><​file php altread.php>​
 <? <?
Строка 791: Строка 793:
  
  
-====== Каталог admin =====+===== Каталог admin ===== 
-<hidden ====Каталог edit====>​ +
-</​hidden>​ +
-----+
 <hidden admin.php><​file php admin.php>​ <hidden admin.php><​file php admin.php>​
 +<?
 +session_start ();
 +if (!$_SESSION['​level'​] || $_SESSION['​level'​] < 1) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию!</​a><​center>'​ );
  
 +?>
 +<​!DOCTYPE html>
 +<​html>​
 +<​head>​
 + <meta charset="​utf-8">​
 + <​title>​ Центральная панель управления </​title>​
 +<style type="​text/​css">​
 +A.admlink {color: red;}
 +A.alllink { color: green;}
 +#cen{
 + text-align:​ center;
 +}
 +.botexit{text-align:​ right; width: 280px; padding: 10px;}
 +.all{border:​ solid 1px; text-align: center; width: 280px; padding: 10px;}
 +.father{width:​ 500px; border-style:​ dotted; border-width:​ 2px; 
 +border-radius:​ 125px 125px 15px 125px;}
 +.linf {border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +.linf:hover {box-shadow:​ 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +</​style>​
 +</​head>​
 +<​body>​
 +<​center><​p><​h3>​ Панель управления </​h3></​p></​center>​
 +<​center>​
 +<p>
 +<div class="​father">​
 +<p>
 +<div class="​all">​
 +
 +<a href="/​admin/​edit/​export.php" ​ class="​admlink">​SQL запросы</​a><​div id="​cen">​(только для администраторов)</​div><​hr>​
 +<a href="/​admin/​edit/​operator.php"​ class="​admlink">​Редактировать персонал </​a><​div id="​cen">​ (требуется доступ "​moderator"​)</​div><​hr>​
 +<a href="/​admin/​edit/​pribor.php" ​ class="​admlink">​Редактировать приборы</​a><​div id="​cen">​ (требуется доступ "​moderator"​)</​div><​hr>​
 +<a href="/​admin/​edit/​object.php" ​ class="​admlink">​Редактировать объекты</​a><​div id="​cen">​ (требуется доступ "​moderator"​)</​div><​hr>​
 +<a href="/​admin/​edit/​sensors.php" ​ class="​admlink">​Редактировать данные датчиков</​a><​div id="​cen">​(требуется доступ "​support"​)</​div><​hr>​
 +<a href="/​admin/​edit/​calib.php"​ class="​admlink">​Внести данные калибровки</​a><​div id="​cen">​(требуется доступ "​support"​)</​div><​hr>​
 +</​div>​
 +</p>
 +<p>
 +<div class="​all">​
 +<a href="/​admin/​edit/​makeurchoise.html"​ class="​alllink">​Внесение новых данных</​a><​hr>​
 +</​div>​
 +</p>
 +<br>
 +<div class="​botexit">​
 +<a href="​admin_logout.php"​ class="​linf">​Выйти?</​a>​
 +</​div>​
 +</​div>​
 +</p>
 +</​center>​
 +</​body>​
 +</​html>​
 </​file></​hidden>​ </​file></​hidden>​
 ---- ----
 <hidden admin_logout.php><​file php admin_logout.php>​ <hidden admin_logout.php><​file php admin_logout.php>​
 +<?
 + ​session_start ();
 +
 +if (!$_SESSION['​level'​]) die ( '<​center><​p>​Error!:​ Empty page</​p></​center>'​ );
 +
 +session_destroy ();
 +?>
 +
 +<​html>​
 +<​head>​
 +<​title>​Панель управления</​title>​
 +<style type= "​text/​css">#​wrap{width:​ 100%;​height:​ 100%;​}.loginbox1{width:​ 300px;​padding:​ 4px;border: 1px solid #​777;​background-color:​ #777;color: white;​font-weight:​ bold;​}.loginbox2{width:​ 300px;​padding:​ 4px;border: 1px solid #777;color: #​777;​}</​style>​
 +</​head>​
 +<​body>​
 +<​center>​
 +<table cellpadding= "​0"​ cellspacing= "​0"​ id= "​wrap"><​tr><​td align= "​center">​
 +<table cellpadding= "​0"​ cellspacing= "​0"><​tr><​td class= "​loginbox1"​ align= "​center">​Выход выполнен</​td></​tr>​
 + <​tr><​td class= "​loginbox2"​ align= "​center"><​a href=/​admin/​index.php>​Вернуться</​a></​td></​tr>​
 +</​table></​td></​tr>​
 +</​table>​
 +</​center>​
 +</​body>​
 +</​html>​
 </​file></​hidden>​ </​file></​hidden>​
 ---- ----
 <hidden config.php><​file php config.php>​ <hidden config.php><​file php config.php>​
 +<?​php ​
 +<?​php ​
 +$buffer = array();
 +$buffer['​login'​] = ['​password'​=>'​pass','​level'​=>​255]; ​
 +$buffer['​anotherLogin'​] = ['​password'​=>'​pass','​level'​=>​255];​
 +// От 1 до 255. 0 - не авторизован,​ 1 - низший уровень.
 +?> 
 </​file></​hidden>​ </​file></​hidden>​
 ---- ----
 <hidden index.php><​file php index.php>​ <hidden index.php><​file php index.php>​
 +<? 
 +session_start ();
 +if(!empty($_SESSION['​level'​]))
 +{
 + if($_SESSION['​level'​] > 1)
 + {
 +?>
 +<​html><​head>​
 +<​title>​Панель управления</​title>​
 +<style type= text/​css>#​wrap{width:​ 100%;​height:​ 100%;}
 +.loginbox1{width:​ 300px;​padding:​ 4px;border: 1px solid #​777;​background-color:​ #777;color: white;​font-weight:​ bold;}
 +.loginbox2{width:​ 300px;​padding:​ 4px;border: 1px solid #777;color: #777;}
 +.loginnow{width:​ 300px;​padding:​ 4px;border: 1px solid #777;color: #777;}
 +</​style>​
 +</​head>​
 +<​body>​
 + <​center>​
 + <table cellpadding=0 cellspacing= «0» id= «wrap»><​tr><​td align=center>​
 + <​table cellpadding=0 cellspacing= «0»>
 + <​tr><​td class=loginbox1 align=center>​Вход выполнен</​td></​tr>​
 + <​tr><​td class=loginbox2 align=center>​
 + <a href=admin.php>​Перейти к панели управления</​a></​td></​tr>​
 + </​table>​
 + </​td></​tr>​
 + </​table>​
 + </​center>​
 +</​body>​
 +</​html>​
 +<?
 +exit;
 +}
 +}
 +$_SESSION['​level'​] = 0;
 +include ('​config.php'​);​
 +function not_logged_in ()
 +{
 + echo '
 + <​html>​
 + <​head>​
 + <​title>​Вход в панель управления</​title>​
 + <style type=text/​css>​
 + #​wrap{width:​ 100%;​height:​ 100%;}
 + #​wraptd{padding:​ 20px;}
 + .loginbox1{width:​ 300px;​padding:​ 4px;border: 1px solid #​777;​background-color:​ #777;color: white;​font-weight:​ bold;}
 + .loginbox2{width:​ 300px;​padding:​ 4px;border: 1px solid #777;color: #777;}
 + .loginbox2 input{width:​ 200px;​margin:​ 3px 0;​border-color:​ #888;color: #777;}
 + </​style>​
 + </​head>​
 + <​body>​
 + <​center>​
 + <​table cellpadding=0 cellspacing=0 id=wrap><​tr><​td align=center id=wraptd>​
 + <​table cellpadding=0 cellspacing=0>​
 + <​tr><​td class=loginbox1 align=center>​Вход в панель</​td></​tr>​
 + <​tr><​td class=loginbox2 align=center><​form action=index.php method=post><​input type=text name=login value=Логин onclick=this.value=""><​br><​input type="​password"​ name=password value=Пароль onclick=this.value=""><​br><​input type=submit value=Войти></​form></​td></​tr>​
 + </​table></​td></​tr>​
 + </​table>​
 + </​center>​
 + </​body>​
 + </​html>';​
 +
 +exit;
 +}
 +if (!$_POST) not_logged_in ();
 +if (!$_POST['​login'​]) not_logged_in ();
 +if (!$_POST['​password'​]) not_logged_in ();
 +if($buffer[$_POST['​login'​]])
 +{
 + if($buffer[$_POST['​login'​]]['​password'​] == $_POST['​password'​])
 + {
 + $_SESSION['​level'​] = $buffer[$_POST['​login'​]]['​level'​];​
 + $loggednow = $_POST['​login'​];​
 + }
 +}
 +else 
 +{
 + not_logged_in();​
 +}
 +?>
 +<​html>​
 +<​head>​
 +<​title>​
 + Панель управления
 +</​title>​
 +<style type=text/​css>#​wrap{width:​ 100%;​height:​ 100%;}
 + .loginbox1{width:​ 300px;​padding:​ 4px;border: 1px solid #​777;​background-color:​ #777;color: white;​font-weight:​ bold;}
 + .loginbox2{width:​ 300px;​padding:​ 4px;border: 1px solid #777;color: #777;}
 + .loginnow{width:​ 300px;​padding:​ 4px;border: 1px solid #777;}
 +</​style>​
 +</​head>​
 +<​body>​
 + <​center>​
 + <table cellpadding=0 cellspacing=0 id=wrap><​tr>​
 + <td align=center>​
 + <​table cellpadding=0 cellspacing=0>​
 + <​tr>​
 + <td class=loginbox1 align=center>​Вход выполнен</​td>​
 + </​tr>​
 + <​tr>​
 + <td align=center class=loginnow>​Вы зашли как<? echo ' "'​.$loggednow.'"';?></​td>​
 + </​tr>​
 + <​tr>​
 + <td class=loginbox2 align=center><​a href=admin.php>​Перейти к панели управления</​a></​td>​
 + </​tr>​
 + </​table>​
 + </​td>​
 + </​tr>​
 + </​table>​
 + </​center>​
 +</​body>​
 +</​html>​
 </​file></​hidden>​ </​file></​hidden>​
 +----
  
 +<hidden ====Каталог edit====>​
 +
 +<hidden calib.php><​file php calib.php>​
 +<?
 +session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +if($_SESSION['​level'​] < 2) die ('<​center><​a href=/​admin/​index.php>​Недостаточно полномочий</​a><​center>'​);​
 +require_once '​../​../​core/​baseinfo.php';​
 +/* скрипт внесения новых данных калибровки */
 +if ((isset($_POST['​uid'​]))&&​(isset($_POST['​sensid'​]))&&​(isset($_POST['​n'​])))
 +{
 + $str = '​{"​n":'​.$_POST['​n'​];​
 + if($_POST['​n'​]>​0)
 + {
 + $str .= ',"​ai":​[';​
 + for($i=0;​$i<​$_POST['​n'​]+1;​$i++)
 + {
 + $str .= $_POST['​ai'​.$i].',';​
 + }
 + $str .= '​]}';​
 + $str = str_replace(',​]}',​ '​]}',​ $str);
 + }
 + else
 + {
 + $str .= '​}';​
 + }
 +
 + $alias = '​(';​
 + $unit = $_POST['​uid'​];​
 + $sensor = $_POST['​sensid'​];​
 + $arr = explode("​_",​$sensor);​
 + $buff = array();
 + for($i=0; $i<​count($arr);​ ++$i)
 + {
 + for($j=0; $j < $i+1; ++$j)
 + {
 + $buff[$i][] = $arr[$j];
 + }
 + }
 + $buff = array_reverse($buff);​
 + foreach ($buff as $key => $value) ​
 + {
 + $alias .= "'"​.implode('​_',​ $value)."',";​
 + }
 + $alias .= '​)';​
 + $alias = str_replace(',​)',​ '​)',​ $alias);
 + /* если адрес для датчика устройства имеется в таблице адресов,​ то внести и в таблицу калибровки */
 + $check_exist = $mysqli->​query("​SELECT `adr` FROM `Production`.`sensors_adr` WHERE `sensor` IN $str AND `unit_id` = $unit ORDER BY `id` DESC LIMIT 1");
 + if($check_exist->​num_rows)
 + {
 + $adr = mysqli_fetch_array($check_exist,​ MYSQLI_ASSOC);​
 + $adr = $adr['​adr'​];​
 + $mysqli->​query("​INSERT INTO `multiplier` (`unit`,​`sensor`,​`timestamp`,​`ratio`,​`adr`) VALUES ($unit,'​$sensor',​NOW(),'​$str','​$adr'​)"​);​
 + }
 + else
 + {
 + $mysqli->​query("​INSERT INTO `multiplier` (`unit`,​`sensor`,​`timestamp`,​`ratio`) VALUES ($unit,'​$sensor',​NOW(),'​$str'​)"​);​
 + }
 +}
 +
 +?>
 +
 +<​style>​
 +td {
 +  text-indent:​ 5px;
 +  border-collapse:​ collapse;
 +  color: #500;
 +  border-top: 0px solid transparent;​
 +  padding: 2px;
 +  text-align:​left;​
 +}
 +tr{text-indent:​ 1px;}
 +
 +input[id=newinp] ​
 +
 + -moz-appearance:​ textfield;
 + width: 4em;
 +}
 +input[id=newinp]::​-webkit-inner-spin-button ​
 +
 +  display: none;
 +}
 +
 +</​style>​
 +
 +<​!DOCTYPE html>
 +<​html>​
 +<​head>​
 + <meta charset="​utf-8">​
 + <​title>​Внесение данных калибровки</​title>​
 + <script src="​http://​code.jquery.com/​jquery-latest.js"></​script>​
 + <style type="​text/​css">​
 + .linf {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +   ​.linf:​hover {
 +    box-shadow: 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 + </​style>​
 +</​head>​
 +<body onload="​elemt();">​
 + <a href="/​admin/​admin.php"​ class="​linf">​Назад</​a>​
 +<​center><​div style="​width:​ 600px; text-align: left;">​
 +
 +<​p><​form id="​ratform"​ onsubmit="​alert('​Данные успешно приняты!'​);"​ method="​POST">​
 +<div id="​unitdiv"><​p>​Выберите устройство:​ <​br><​select id="​unitid"​ name="​uid"​ required>​
 +<option value="">​---</​option>​
 +<?
 +$result = $mysqli->​query("​SELECT `uNum`,​`uName`,​`Serial` FROM `units_list`"​);​
 +while($row = mysqli_fetch_array($result,​MYSQLI_ASSOC))
 +{
 + echo "<​option value="​.$row['​uNum'​].">"​.$row['​uName'​]."​("​.$row['​Serial'​]."​) </​option>";​
 +}
 +?>
 +</​select></​p></​div>​
 +<div id="​sensordiv">​
 +<​p>​Выберите название сенсора и калибровочный параметр<​br>​
 + <select id="​sensorid"​ name="​sensid"​ required>​
 + <option value="">​ Выберите прибор </​option>​
 +</​select></​p></​div>​
 +<div id="​ndiv">​
 +<p> Укажите n<br>
 +<select id="​nid"​ name="​n"​ onchange="​elemt();">​
 +<option value=0>​n=0</​option>​
 +<option value=1>​n=1</​option>​
 +<option value=2>​n=2</​option>​
 +<option value=3>​n=3</​option>​
 +<option value=4>​n=4</​option>​
 +<option value=5>​n=5</​option>​
 +<option value=6>​n=6</​option>​
 +</​select></​p>​
 +</​div>​
 +<​p><​div id="​calibdiv"></​div></​p>​
 +<​p><​form id="​butt"><​input type="​submit"​ id="​buttonok"​ value="​Готово"></​form></​p>​
 +</​form></​p>​
 +
 +
 +</​body>​
 +</​html>​
 +
 +<script type="​text/​javascript">​
 +/* создание форм в зависимости от степени точности калибровки */
 +function elemt()
 +{
 + var i =  Number(document.getElementById('​nid'​).value) +  Number(1);
 + $("#​calibdiv"​).empty();​
 + if(i != 1)
 + {
 + var cnt;
 + for(cnt = 0; cnt < i; ++cnt)
 + {
 + var inp = document.createElement('​input'​);​
 + inp.type = '​number';​
 + inp.step= '​0.0001';​
 + inp.name='​ai'​+cnt;​
 + inp.id = '​newinp';​
 + inp.required = true;
 + inp.placeholder='​a'​+cnt;​
 + calibdiv.appendChild(inp);​
 + }
 + }
 +}
 +
 +$(document).ready(function () {
 +    $('#​unitid'​).change(function () {
 +        var unitid = $(this).val();​
 +        if (unitid == ''​) ​
 +        {
 +            $('#​sensorid'​).html('<​option value="">​ Выберите прибор </​option>'​);​
 +            return(false);​
 +        }
 +        /* загрузка списка датчиков прибора */
 +        $('#​sensorid'​).html('<​option value="">​загрузка...</​option>'​);​
 +        var url = '​../​../​core/​backend.php';​
 +        $.get(url,"​unitnow="​ + unitid,​function (result) {
 +        if(result.back == '​error'​)
 +        {
 +        $('#​sensorid'​).html('<​option value=""> ​ Нет данных ​ </​option>'​);​
 +        }
 +        else
 +        {
 +                    var options = '<​option value="">​ Выберите датчик </​option>';​
 +                    $(result.sens).each(function() {
 +                        options += '<​option value="'​ + $(this).attr('​title'​) + '">'​ + $(this).attr('​title'​) + '</​option>';​
 +                    });
 +                    $('#​sensorid'​).html(options);​
 +                    //​$('#​sensorid'​).attr('​disabled',​ false);
 +                }
 +            },"​json"​
 +        );
 +    });
 +});
 +
 +
 +</​script>​
 +
 +<?
 +/* список уже внесённых данных калибровки */
 +$gg = $mysqli->​query("​SELECT mu.sensor,​mu.timestamp,​mu.ratio,​mu.adr,​CONCAT(li.uname,'​(',​li.Serial,'​)'​) as unit FROM multiplier as mu INNER JOIN (SELECT uNum,uName as uname,​Serial ​ from units_list) as li ON li.uNum = mu.unit ORDER BY unit,​sensor"​);​
 +echo '<​details><​summary>​Список данных колибровки</​summary><​table>';​
 +while ($grow = mysqli_fetch_array($gg,​MYSQLI_ASSOC))
 +{
 + echo '<​tr><​td>'​.$grow['​unit'​].'</​td><​td>'​.$grow['​sensor'​].'</​td><​td>'​.$grow['​timestamp'​].'</​td><​td>'​.$grow['​ratio'​].'</​td><​td>'​.$grow['​adr'​].'</​tr>';​
 +}
 +echo '</​table></​details></​div></​center>';​
 +?>
 +</​file></​hidden>​
 +----
 +
 +<hidden excel.php><​file php excel.php>​
 +<? session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +if($_SESSION['​level'​] < 1) die ('<​center><​a href=/​admin/​index.php>​Недостаточно полномочий</​a><​center>'​);​
 +require_once '​../​../​core/​baseinfo.php';​
 +$result = $mysqli->​query("​SELECT uNum, uName, Serial FROM units_list"​);​
 +?>
 +<​html>​
 +<​head>​
 +    <meta charset="​utf-8">​
 +    <​title>​Выгрузка из excel</​title>​
 +    ​
 +    <script src="​../​../​core/​lib/​xlsx.full.min.js"></​script>​
 +    <script src="​https://​ajax.googleapis.com/​ajax/​libs/​jquery/​1.11.1/​jquery.min.js"></​script>​
 +    <script src="​https://​cdnjs.cloudflare.com/​ajax/​libs/​xlsx/​0.7.7/​xlsx.core.min.js"></​script>​
 +    <script src="​http://​code.jquery.com/​jquery-latest.js"></​script>​
 +    <​style>​
 +    .bl { display: none;}
 +    .linf {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +   ​.linf:​hover {
 +    box-shadow: 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +    .exclink{
 +    border: 1px outset #333; /* Рамка */
 +    border-radius:​ 15px;
 +    background:#​eaeaea;​
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none;
 +    }
 +    .exclink:​hover{
 +        ​
 +        background: linear-gradient(to bottom, #fcfff4, #e9e9ce);
 +        color: red;
 +    }
 +    </​style>​
 +</​head>​
 +<​body>​
 +<​center><​div style="​width:​ 600px; text-align: left; display: inline-block;​ vertical-align:​ middle;">​
 +<form id="​myForm">​
 +Выберите устройство:<​br>​
 +<select id="​klop">​
 +<option value="">​ --- </​option>​
 +<? 
 +while ($row = mysqli_fetch_array($result))
 +{
 +echo "<​option value="​.$row['​uNum'​].">";​
 +echo $row['​uName'​].'​('​.$row['​Serial'​].'​)';​
 +echo "</​option>";​
 +}
 +?>
 +</​select>​
 +</​form>​
 +<div id="​toShow"​ class="​variations_button bl">​
 +<input accept="​application/​vnd.openxmlformats-officedocument.spreadsheetml.sheet,​application/​vnd.ms-excel.sheet.macroEnabled.12"​ type="​file"​ id="​excel"​ name="​files"/>​
 +<input type="​submit"​ value="​Готово"​ id="​done"/>​
 +</​div>​
 +</​div></​center>​
 +<​center><​div style="​position:​ fixed; bottom: 5%;"><​a href="​../​../​export/​Standart book.xlsx"​ class="​exclink">​Excel файл со списком</​a><​p style="​font-size:​ 12px"><?​
 +$filename = '​../​../​export/​Standart book.xlsx';​
 +if (file_exists($filename)) ​
 +{
 +    echo "​Обновлено:​ " . date ("d M y", filemtime($filename));​
 +} ?></​p></​center></​div>​
 +
 +<​script>​
 +
 +function debug(inp)
 +{
 +    $.ajax({
 +    url:"​../​../​core/​jsonadd.php",​
 +    dataType: '​json',​
 +    type: '​POST',​
 +    data: {fromtable: '​[{"​AKey":"'​+document.getElementById('​klop'​).value+'"​}]'​+JSON.stringify(inp) } , 
 +    async: true});
 +}
 +/* чтение файла эксель и формирование с помощью библиотеки JSON */
 +function handleFile(e) ​
 +{
 +    var files = e.files;
 +    var i, f;
 +    var sus = '';​
 +    ​
 +    //Loop through files
 +    for (i = 0, f = files[i]; i != files.length;​ ++i) 
 +    {
 +        var reader = new FileReader();​
 +        var name = f.name;
 +        reader.onload = function (e) 
 +        {
 +            var data = e.target.result;​
 +            var workbook = XLSX.read(data,​ { type: '​binary'​ });
 +            var sheet_name_list = workbook.SheetNames;​
 +            sheet_name_list.forEach(function (y) 
 +                {
 +                    var result = '';​
 +                    /* iterate through sheets */
 +            //Convert the cell value to Json
 +                var roa = XLSX.utils.sheet_to_json(workbook.Sheets[y]);​
 +                if (roa.length > 0)
 +                    {
 +                        result = roa;
 +                        debug(result);​
 +                    }
 +
 +                });
 +        };
 +        reader.readAsArrayBuffer(f);​
 +    }
 +alert("​Данные успешно обработаны!"​);​
 +}
 +  //Change event to dropdownlist
 + ​document.getElementById('​done'​).addEventListener('​click',​ updateSize, false);
 +
 +// preprocessing input data
 +function updateSize() ​
 +{
 +   var doc = document.getElementById("​excel"​);​
 +    var listoftype = ['​xlsx','​xlsm'​];​ // array of allowable formats
 +    if(($.inArray((doc.files[0].name.split('​.'​)).pop(),​ listoftype)) == -1) 
 +    {
 +        alert('​Выбран файл не поддерживаемого формата!\r\nПоддерживаемые форматы:​ '​+listoftype.join(',​ '));
 +    }
 +    else  // 
 +    { 
 +    var resultAction = confirm("​Проверьте внесённые данные:​ \r\n Устройство:​ "+ $("#​klop option:​selected"​).text() + "\r\n Файл: "​+doc.files[0].name);​
 +        if(resultAction)
 +        {
 +            handleFile(doc);​
 +        }
 +    }
 +  doc.value = "";​
 +}
 +
 +/* show file-form if UNIT selected
 +else hiden
 +*/
 +var sel = document.getElementById('​klop'​);​
 +    sel.addEventListener('​change',​ function (event) {
 +        if(this.value)  ​
 +        {
 +            document.getElementById('​toShow'​).classList.remove('​bl'​);​
 +        } 
 +        else 
 +        {
 +            document.getElementById('​toShow'​).classList.add('​bl'​);​
 +        }
 +    });
 +
 +</​script>​
 +
 +</​body>​
 +</​html>​
 +
 +</​file></​hidden>​
 +----
 +
 +<hidden export.php><​file php export.php>​
 +<? session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +if($_SESSION['​level'​] < 255) die ('<​center><​a href=/​admin/​index.php>​Недостаточно полномочий</​a><​center>'​);​
 +$mysqli =  mysqli_connect('​address','​ReadOnlyLogin',​ '​pass','​DB'​) or die ("​Connection error: ". mysqli_error($mysqli));​
 +?>
 +<style type="​text/​css">​
 +        .linf {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +   ​.linf:​hover {
 +    box-shadow: 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +</​style>​
 +<a href="/​admin/​admin.php"​ class="​linf">​Назад</​a>​
 +<​center>​
 +<form method="​POST"​ action="">​
 + <​label>​ Выполнить SQL запрос<​br>​ </​label>​
 +        <​textarea name="​query"​ type="​text"​ rows="​20"​ style="​width:​ 900px; height: 400px; border: 1px solid #​008"/></​textarea><​br>​
 +        <input type="​submit"​ name="​gotadd"​ value="​Выполнить и скачать"/><​br>​
 +</​form></​center>​
 +<?
 +if(isset($_POST['​query'​]))
 +{
 +    $path = $_SERVER['​DOCUMENT_ROOT'​].'/​export/​file.csv';​
 + unlink($path);​
 + $inject = strip_tags($_POST['​query'​]);​
 + if ($inject{strlen($inject)-1} == ';'​) { $inject = substr($inject,​0,​-1);​ }
 + $result = $mysqli->​query("​$inject INTO OUTFILE '​$path'​ CHARACTER SET cp1251 FIELDS TERMINATED BY ';'​LINES TERMINATED BY '​\r\n'"​) or die ("​Query error: ". mysqli_error($mysqli));​
 + if (!mysqli_error())
 + {
 +  echo '<​br><​center><​a href="​http://​188.35.161.31/​export/​file.csv">​Скачать</​a></​center>';​
 +  }
 +mysqli_close($mysqli);​
 +}
 +?>
 +</​file></​hidden>​
 +----
 +
 +
 +<hidden index.php><​file php index.php>​
 +<?​php ​
 +session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +  header('​Location:/​admin/​admin.php'​);​
 +  exit;
 +?>
 +</​file></​hidden>​
 +----
 +
 +
 +<hidden makeurchoise.html><​file html makeurchoise.html>​
 +<​!DOCTYPE html>
 +<​html>​
 +<​head>​
 + <meta charset="​utf-8">​
 + <​title>​Выбор способа внесения данных</​title>​
 + <script src="​http://​code.jquery.com/​jquery-latest.js"></​script>​
 + <style type="​text/​css">​
 + .linf ​
 + {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +    .linf:​hover ​
 +    {
 +    box-shadow:​ 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background:​ linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +    .container ​
 +    {
 + ​ width:​ 90%;
 + }
 + img 
 + {
 +  max-width:​ 45%;
 +  display: inline-block;​
 +  height: auto;
 + }
 + @media screen and (max-width: 1000px)
 + {
 + img
 + {
 + max-width:​ 100%;
 + }
 + }
 + .image
 + {
 + opacity: 0.7;
 + }
 + .image:​not(:​hover)
 + {
 + transition:​ 0.5s;
 + }
 + .image:​hover
 + {
 +
 + transition:​ 1s;
 +      -webkit-transform:​ translateX(30px) translateY(-30px);​
 +  transform:​ translateX(30px) translateY(-30px);​
 +  opacity: 1;
 + }
 + .excel:​hover
 + {
 + -webkit-box-shadow:​-30px 30px 50px 25px #6bbd6c ;
 + -moz-box-shadow:​-30px 30px 50px 25px #6bbd6c ;
 + box-shadow:​-30px 30px 50px 25px #6bbd6c ;
 + }
 + .simple:​hover
 + {
 + -webkit-box-shadow:​-30px 30px 50px 25px #404040 ;
 + -moz-box-shadow:​-30px 30px 50px 25px #404040 ;
 + box-shadow:​-30px 30px 50px 25px #404040 ;
 + }
 + html, body, iframe { height: 100%; overflow: hidden;}
 + </​style>​
 +</​head>​
 +<​body>​
 +
 +<a href="/​admin/​admin.php"​ class="​linf">​Назад</​a>​
 +<​center><​p>​
 + <div id="​choise"​ class="​container">​
 + <img class="​excel image" id="​excel"​ src="​../​../​core/​img/​excel.png"​ width="​1025"​ height="​550">​
 + <img class="​simple image" id="​simple"​ src="​../​../​core/​img/​form.png"​ width="​1025"​ height="​550">​
 + </​div>​
 + <div id="​frame"​ style="​width:​ 100%; height: auto;" hidden>
 +
 + </​div></​p>​
 +</​center>​
 +</​body>​
 +</​html>​
 +<script type="​text/​javascript">​
 +/* Создание фрейма с выбранной страницей */
 +$('​img'​).on('​click',​function()
 +{
 + var page = $(this).prop('​id'​);​
 + $('#​frame'​).html('<​iframe allowtransparency="​true"​ allowfullscreen allowscriptaccess="​always"​ frameborder="​0"​ scrolling="​yes"​ style="​width:​ 100%; height: 90vh;" src="'​ + page + '​.php"></​iframe>'​);​
 + $('#​frame'​).removeAttr('​hidden'​);​
 + $('#​choise'​).attr('​hidden','​true'​);​
 +});
 +</​script>​
 +</​file></​hidden>​
 +----
 +
 +
 +<hidden object.php><​file php object.php>​
 +<?php session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +if($_SESSION['​level'​] < 127) die ('<​center><​a href=/​admin/​index.php>​Недостаточно полномочий</​a><​center>'​);​
 +require_once '​../​../​core/​baseinfo.php';​
 +?>
 +
 +<​style>​
 +td {
 +  text-indent:​ 0px;
 +  width:​200px;  ​
 +  border-collapse:​ collapse;
 +  color: #500;
 +  border-top: 0px solid transparent;​
 +  padding: 2px;
 +  text-align:​center;​
 +}
 +tr{text-indent:​ 1px;}
 + .linf {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +   ​.linf:​hover {
 +    box-shadow: 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +</​style>​
 +<a href="/​admin/​admin.php"​ class="​linf">​Назад</​a>​
 +<​center>​
 +<div style="​display:​ inline-block;​ margin-left:​ 0px; vertical-align:​ middle;">​
 + <form method="​POST"​ action="">​
 + <​label>​ Добавить новый объект<​br>​ </​label>​
 +        <input name="​addobj"​ type="​text"​ placeholder="​Введите наименование"/><​br>​
 +        <input type="​submit"​ name="​gotadd"​ value="​Добавить"/><​br>​
 +    </​form>​
 +</​div>​
 +
 +<div style="​display:​ inline-block;​ margin-left:​ 45px; vertical-align:​ middle;">​
 + <form method="​POST"​ action="">​
 + <​label>​ Удалить объект из базы<​br>​ </​label>​
 +        <input name="​delobj"​ type="​text"​ placeholder="​Введите ID"/><​br>​
 +        <input type="​submit"​ name="​gotdel"​ value="​Удалить"/><​br>​
 +    </​form>​
 +</​div>​
 +</​center>​
 +
 +<?
 +/* обработка удаления и внесения объектов */
 +if(isset($_POST['​addobj'​]) && ($_POST['​addobj'​]!==''​))
 +{
 + $name=strip_tags($_POST['​addobj'​]);​
 + $addyet = $mysqli->​query("​INSERT INTO `Objects` (`NameOb`) VALUES ('​$name'​)"​);​
 + header("​Refresh:​0"​);​
 +}
 +elseif(isset($_POST['​delobj'​]) && ($_POST['​delobj'​]!==''​))
 +{
 + $delid=strip_tags($_POST['​delobj'​]);​
 + $delyet = $mysqli->​query("​UPDATE `Objects` SET `NameOb`='​DELETED'​ WHERE NumOb=$delid"​);​
 + header("​Refresh:​0"​);​
 +}
 +else{}
 +
 +Echo "<​center>​Список объектов:<​br>";​
 +
 +$result = $mysqli->​query("​SELECT * FROM `Objects` WHERE `NameOb`!='​DELETED'"​);​
 + Echo '<​table><​tr><​td><​P><​center>​ ID </​center></​td><​td><​center>​ Object </​center></​P></​td></​tr>';​
 + do{
 + Echo '<​tr>';​
 + Echo '<​td>'​.$myrow['​NumOb'​].'</​td>';​
 + Echo '<​td>'​.$myrow['​NameOb'​].'</​td>';​
 + Echo '</​tr>';​
 + }while ($myrow = mysqli_fetch_array($result));​
 + Echo '</​table></​center><​br>';​
 +?>
 +</​file></​hidden>​
 +----
 +
 +
 +<hidden operator.php><​file php operator.php>​
 +<? session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +if($_SESSION['​level'​] < 127) die ('<​center><​a href=/​admin/​index.php>​Недостаточно полномочий</​a><​center>'​);​
 +require_once '​../​../​core/​baseinfo.php';​
 +?>
 +
 +<​style>​
 +td {
 +  text-indent:​ 0px;
 +  width:​200px;  ​
 +  border-collapse:​ collapse;
 +  color: #500;
 +  border-top: 0px solid transparent;​
 +  padding: 2px;
 +  text-align:​center;​
 +}
 +tr{text-indent:​ 1px;}
 +
 +    .linf {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +   ​.linf:​hover {
 +    box-shadow: 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +</​style>​
 +<a href="/​admin/​admin.php"​ class="​linf">​Назад</​a>​
 +<​center>​
 +<div style="​display:​ inline-block;​ margin-left:​ 0px; vertical-align:​ middle;">​
 + <form method="​POST"​ action="">​
 + <​label>​ Добавить нового оператора<​br>​ </​label>​
 +        <input name="​addoperator"​ type="​text"​ placeholder="​Введите имя"/><​br>​
 +        <input type="​submit"​ name="​gotadd"​ value="​Добавить"/><​br>​
 +    </​form>​
 +</​div>​
 +
 +<div style="​display:​ inline-block;​ margin-left:​ 50px; vertical-align:​ middle;">​
 + <form method="​POST"​ action="">​
 + <​label>​ Удалить оператора из базы<​br>​ </​label>​
 +        <input name="​deloperator"​ type="​text"​ placeholder="​Введите ID"/><​br>​
 +        <input type="​submit"​ name="​gotdel"​ value="​Удалить"/><​br>​
 +    </​form>​
 +</​div>​
 +</​center>​
 +
 +<?
 +/* Обработчик добавление и удаления операторов */
 +if(isset($_POST['​addoperator'​]) && ($_POST['​addoperator'​]!==''​))
 +{
 + $name=strip_tags($_POST['​addoperator'​]);​
 + $addyet = $mysqli->​query("​INSERT INTO `OPR_list` (`Name`) VALUES ('​$name'​)"​);​
 + header("​Refresh:​0"​);​
 +}
 +elseif(isset($_POST['​deloperator'​]) && ($_POST['​deloperator'​]!==''​))
 +{
 + $delid=strip_tags($_POST['​deloperator'​]);​
 + $delyet = $mysqli->​query("​UPDATE `OPR_list` SET `Name`='​REMOVED'​ WHERE N=$delid"​);​
 + header("​Refresh:​0"​);​
 +}
 +else{}
 +
 +Echo "<​center>​Список операторов:<​br>";​
 +
 +$result = $mysqli->​query("​SELECT * FROM `OPR_list` WHERE `Name`!='​REMOVED'"​);​
 + Echo '<​table><​tr><​td><​P><​center>​ ID </​center></​td><​td><​center>​ Name </​center></​P></​td></​tr>';​
 + do{
 + Echo '<​tr>';​
 + Echo '<​td>'​.$myrow['​N'​].'</​td>';​
 + Echo '<​td>'​.$myrow['​Name'​].'</​td>';​
 + Echo '</​tr>';​
 + }while ($myrow = mysqli_fetch_array($result));​
 + Echo '</​table></​center><​br>';​
 +?>
 +</​file></​hidden>​
 +----
 +
 +
 +<hidden pribor.php><​file php pribor.php>​
 +<?php session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +if($_SESSION['​level'​] < 127) die ('<​center><​a href=/​admin/​index.php>​Недостаточно полномочий</​a><​center>'​);​
 +require_once '​../​../​core/​baseinfo.php';​
 +?>
 +<style type="​text/​css">​
 +     .linf {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +   ​.linf:​hover {
 +    box-shadow: 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +</​style>​
 +<a href="/​admin/​admin.php"​ class="​linf">​Назад</​a>​
 +<​center>​
 +<p>
 +<div style="​display:​ inline-block;​ margin-left:​ 0px; vertical-align:​ middle;">​
 + <form method="​POST"​ action="">​
 + <​label>​ Добавить новый прибор<​br>​ </​label>​
 +        <input name="​uname"​ type="​text"​ placeholder="​Введите наименование"​ required/><​br>​
 +        <input name="​userial"​ type="​text"​ placeholder="​Введите серийный ключ"​ required/><​br>​
 +        <input name="​uakey"​ type="​text"​ placeholder="​Введите ключ доступа"​ required/><​br>​
 +        <input name="​ux"​ type="​text"​ placeholder="​Введите координату X" required/><​br>​
 +        <input name="​uy"​ type="​text"​ placeholder="​Введите координату Y" required/><​br>​
 +        <input name="​uidobj"​ type="​text"​ placeholder="​Введите ID объекта"​ required/><​br>​
 +        <input name="​uidop"​ type="​text"​ placeholder="​Введите ID оператора"​ required/><​br>​
 +        <input type="​submit"​ name="​gotadd"​ value="​Добавить"/><​br>​
 +    </​form>​
 +</​div>​
 +<div style="​display:​ inline-block;​ margin-left:​ 45px; vertical-align:​ middle;">​
 + <form method="​POST"​ action="">​
 + <​label>​ Обновить данные<​br>​ </​label>​
 +        <input name="​updid"​ type="​text"​ placeholder="​Введите ID прибора"​ required/><​br>​
 +        <input name="​updname"​ type="​text"​ placeholder="​Введите новое имя"/><​br>​
 +        <input name="​updx"​ type="​text"​ placeholder="​Введите новую координату X"/><​br>​
 +        <input name="​updy"​ type="​text"​ placeholder="​Введите новую координату Y"/><​br>​
 +        <input name="​updobj"​ type="​text"​ placeholder="​Введите ID нового объекта"/><​br>​
 +        <input name="​updop"​ type="​text"​ placeholder="​Введите ID нового оператора"/><​br>​
 +        <input type="​submit"​ name="​gotdel"​ value="​Обновить"/><​br>​
 +    </​form>​
 +</​div>​
 +<div style="​display:​ inline-block;​ margin-left:​ 45px; vertical-align:​ middle;">​
 + <form method="​POST"​ action="">​
 + <​label>​ Удалить прибор из базы<​br>​ </​label>​
 +        <input name="​udel"​ type="​text"​ placeholder="​Введите ID"/><​br>​
 +        <input type="​submit"​ name="​gotdel"​ value="​Удалить"/><​br>​
 +    </​form>​
 +</​div>​
 +</p>
 +</​center>​
 +
 +<?
 +/* внесение нового устройства */
 +if(isset($_POST['​uname'​]) && isset($_POST['​userial'​]) && isset($_POST['​uakey'​]) && isset($_POST['​ux'​]) && isset($_POST['​uy'​]) && isset($_POST['​uidobj'​]) &&​(isset($_POST['​uidop'​])) && ($_POST['​uname'​] !== ''​) && ($_POST['​userial'​] !== ''​) && ($_POST['​uakey'​] !== ''​) && ($_POST['​ux'​] !== ''​) && ($_POST['​uy'​]!==''​) && ($_POST['​uidobj'​] !==''​) && ($_POST['​uidop'​]!==''​))
 +{
 + $name=strip_tags($_POST['​uname'​]);​
 + $serial=strip_tags($_POST['​userial'​]);​
 + $akey=strip_tags($_POST['​uakey'​]);​
 + $x=strip_tags($_POST['​ux'​]);​
 + $y=strip_tags($_POST['​uy'​]);​
 + $idobj=strip_tags($_POST['​uidobj'​]);​
 + $opid=strip_tags($_POST['​uidop'​]);​
 + $addyet = $mysqli->​query("​INSERT INTO `units_list` (`uName`,​`Serial`,​`Akey`,​`OPid`,​`x`,​`y`,​`IDob`) VALUES ('​$name','​$serial','​$akey','​$opid','​$x','​$y','​$idobj'​)"​);​
 + header("​Refresh:​0"​);​
 +}
 +/* удаление устройства */
 +elseif(isset($_POST['​udel'​]))
 +{
 +
 + $delid=strip_tags($_POST['​udel'​]);​
 + $delyet = $mysqli->​query("​UPDATE `units_list` SET `remove`='​1'​ WHERE uNum=$delid"​);​
 + header("​Refresh:​0"​);​
 +}
 +/* обновление информации о устройстве */
 +elseif (isset($_POST['​updid'​]) && isset($_POST['​updop'​]) && isset($_POST['​updname'​]) && isset($_POST['​updx'​]) && isset($_POST['​updy'​]) && isset($_POST['​updobj'​]) && ($_POST['​updid'​] !== ''​) && ($_POST['​updname'​] !== ''​) && ($_POST['​updy'​] !== ''​) && ($_POST['​updobj'​]!==''​) && ($_POST['​updop'​]!==''​))
 +{
 + $updid=strip_tags($_POST['​updid'​]);​
 + $updname=strip_tags($_POST['​updname'​]);​
 + $updx=strip_tags($_POST['​updx'​]);​
 + $updy=strip_tags($_POST['​updy'​]);​
 + $updobj=strip_tags($_POST['​updobj'​]);​
 + $updop=strip_tags($_POST['​updop'​]);​
 + $addyet = $mysqli->​query("​UPDATE `units_list` SET `uName`='​$updname',​`x`='​$updx',​`y`='​$updy',​`IDob`='​$updobj',​`OPid`='​$updop'​ WHERE `uNum`='​$updid'"​);​
 + header("​Refresh:​0"​);​
 +}
 +else{}
 +
 +Echo '<​center><​div class="​absolute">​Список приборов:<​br>';​
 +
 +$result = $mysqli->​query("​SELECT * FROM `units_list`"​);​
 + Echo '<​center><​table><​tr><​td><​P><​center>​ ID </​center></​td><​td><​center>​ Name </​center></​td><​td><​center>​ Serial </​center></​td><​td><​center>​ Access Key </​center></​td><​td><​center>​ Operator </​center></​td><​td><​center>​ Operator ID </​center></​td><​td><​center>​ X </​center></​td><​td><​center>​ Y </​center></​td><​td><​center>​ Object </​center></​td><​td><​center>​Object ID</​center></​td><​td><​center>​Removed</​center></​td></​p></​tr>';​
 + do{
 + $objectt = $myrow['​IDob'​];​
 + $operators = $myrow['​OPid'​];​
 + $operator = $mysqli->​query("​SELECT `Name` FROM `OPR_list` WHERE `N`='​$operators'"​);​
 + $object = $mysqli->​query("​SELECT `NameOb` FROM `Objects` WHERE `NumOb`='​$objectt'"​);​
 + $objectt = mysqli_fetch_array($object);​
 + $operators = mysqli_fetch_array($operator);​
 + Echo '<​tr>';​
 + Echo '<​td><​center>'​.$myrow['​uNum'​].'</​center></​td>';​
 + Echo '<​td><​center>'​.$myrow['​uName'​].'</​center></​td>';​
 + Echo '<​td><​center>'​.$myrow['​Serial'​].'</​center></​td>';​
 + Echo '<​td><​center>'​.$myrow['​AKey'​].'</​center></​td>';​
 + Echo '<​td><​center>'​.$operators['​Name'​].'</​center></​td>';​
 + Echo '<​td><​center>'​.$myrow['​OPid'​].'</​td>';​
 + Echo '<​td><​center>'​.$myrow['​x'​].'</​td>';​
 + Echo '<​td><​center>'​.$myrow['​y'​].'</​td>';​
 + Echo '<​td><​center>'​.$objectt['​NameOb'​].'</​td>';​
 + Echo '<​td><​center>'​.$myrow['​IDob'​].'</​td>';​
 + Echo '<​td><​center>'​.$myrow['​remove'​].'</​td>';​
 + Echo '</​tr>';​
 + }while ($myrow = mysqli_fetch_array($result));​
 + Echo "</​table></​center><​br></​div></​center>";​
 +?>
 +</​file></​hidden>​
 +----
 +
 +
 +<hidden sensors.php><​file php sensors.php>​
 +<?
 +session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +if($_SESSION['​level'​] < 2) die ('<​center><​a href=/​admin/​index.php>​Недостаточно полномочий</​a><​center>'​);​
 +
 +require_once '​../​../​core/​baseinfo.php';​
 +$result = $mysqli->​query("​SELECT `uNum`,​`uName`,​`Serial` FROM `Production`.`units_list` WHERE `remove` != 1");
 +
 +?>
 +
 +<​!DOCTYPE html>
 +<​html>​
 +<​head>​
 + <meta charset="​utf-8">​
 + <script src="​http://​code.jquery.com/​jquery-latest.js"></​script>​
 + <​title>​ Add Sensor Page </​title>​
 + <style type="​text/​css">​
 + th{
 + text-align:​center;​
 + }
 +
 + .linf {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +   ​.linf:​hover {
 +    box-shadow: 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +    input[type=number] ​
 +
 + -moz-appearance:​ textfield;
 + width: 4em;
 + }
 + input[type=number]::​-webkit-inner-spin-button ​
 +
 +  display: none;
 + }
 +
 + .notvalid
 + {
 + background-color:​rgb(245,​ 211, 174);
 + }
 +
 + #​insert_form:​focus-within input:valid {
 +        border-color:​ green;
 +    }
 +
 +    #​insert_form:​focus-within input:​invalid {
 +        border-color:​ red;
 +    }
 +    #​insert_form:​focus-within select:​valid {
 +        border-color:​ green;
 +    }
 +
 +    #​insert_form:​focus-within select:​invalid {
 +        border-color:​ red;
 +    }
 +
 +    #​update_form:​focus-within .changed
 +    {
 +    border-color:#​aaf2e9;​
 +    }
 +
 +
 +    input:​read-only {
 +        background:​none repeat 0 0 rgb(145, 145, 147);
 +    }
 + </​style>​
 +</​head>​
 +<​body>​
 + <a href="/​admin/​admin.php"​ class="​linf">​Назад</​a>​
 +
 + <!-- HEADER DIV -->
 +<​center><​div style="​text-align:​ left; display: table; ​
 +border-top:​4px double #000000;
 +border-right:​4px double #000000;
 +border-bottom:​4px double #000000;
 +border-left:​4px double #​000000;"> ​
 +
 + <!-- ADD NEW DIV -->
 +<div style="​
 +text-align: left;
 +padding: 5px;">​
 +
 +<form id="​insert_form">​
 +<p>
 +<​b>​Устройство</​b>​
 +<select id="​unitid"​ class="​new"​ name="​unit_id"​ required>​
 +<option value="">​---</​option>​
 +<?
 +$list = '';​
 +while($row = mysqli_fetch_array($result,​MYSQLI_ASSOC))
 +{
 + $list .= "<​option value="​.$row['​uNum'​].">"​.$row['​uName'​]."​("​.$row['​Serial'​]."​) </​option>";​
 +}
 +echo $list;
 +unset($result);​
 +?>
 +</​select></​p>​
 +<div id="​input_frame">​
 +<​table><​tr><​th>​Название</​th><​th>​Адрес сенсора</​th><​th>​Краткое название</​th><​th>​Заметка</​th></​tr>​
 +<tr>
 +<​td><​input type="​text"​ autocomplete="​off"​ class="​new"​ name="​sensor"​ id="​sensor_fullname"​ required></​td>​
 +<​td><​input type="​text"​ autocomplete="​off"​ class="​new"​ name="​adr"​ id="​fill_adr"></​td>​
 +<​td><​input type="​text"​ autocomplete="​off"​ class="​new"​ name="​sensor_name"​ id="​sensor_shortname"​ required></​td>​
 +<​td><​input type="​text"​ autocomplete="​off"​ class="​new"​ name="​note"​ id="​fill_note"></​td>​
 +</tr>
 +</​table>​
 +</​div>​
 +<br>
 +<input type="​button"​ onclick="​insert_value()"​ name="​insert_button"​ value="​Добавить"><​div id="​text">​
 +<br>
 +</​div>​
 +</​form>​
 +</​div>​
 +
 +<div style="​
 +text-align: left;
 +border-top:​2px dashed #000000; padding: 5px;">​
 +<form id="​update_form">​
 +
 +<?
 + $actual_data = $mysqli->​query("​SELECT `id`,​`unit_id`,​`sensor`,​`adr`,​`timestamp`,​`sensor_name`,​`note` FROM `Production`.`sensors_adr`"​);​
 + if($actual_data->​num_rows)
 + {
 + echo '<​table><​tr><​th>​ID</​th><​th>​ID Прибора</​th><​th>​Название</​th><​th>​Адрес</​th><​th>​Дата-время</​th><​th>​Краткое название</​th><​th>​Заметка</​th></​tr>';​
 + while($actual = mysqli_fetch_array($actual_data,​ MYSQLI_ASSOC))
 + {
 + $search = '<​option value='​.$actual['​unit_id'​].'>';​
 + $edit = '<​option value='​.$actual['​unit_id'​].'​ selected>';​
 + $now = str_replace($search,​ $edit , $list);
 + echo '<​tr>';​
 + echo '<​td><​input type="​text"​ autocomplete="​off"​ class="​def"​ name="​ID"​ readonly id="'​.$actual['​id'​].'"​ value="'​.$actual['​id'​].'"></​td>';​
 + //echo '<​td><​input type="​number"​ autocomplete="​off"​ class="​def"​ name="​unit_id"​ id="'​.$actual['​id'​].'"​ value="'​.$actual['​unit_id'​].'"></​td>';​
 + echo '<​td><​select class="​def"​ name="​unit_id"​ id="'​.$actual['​id'​].'">'​.$now.'</​select></​td>';​
 + echo '<​td><​input type="​text"​ autocomplete="​off"​ class="​def"​ name="​sensor"​ id="'​.$actual['​id'​].'"​ value="'​.$actual['​sensor'​].'"></​td>';​
 + echo '<​td><​input type="​text"​ autocomplete="​off"​ class="​def"​ name="​adr"​ id="'​.$actual['​id'​].'"​ value="'​.$actual['​adr'​].'"></​td>';​
 + echo '<​td><​input type="​text"​ autocomplete="​off"​ class="​def"​ name="​timestamp"​ readonly id="'​.$actual['​id'​].'"​ value="'​.$actual['​timestamp'​].'"></​td>';​
 + echo '<​td><​input type="​text"​ autocomplete="​off"​ class="​def"​ name="​sensor_name"​ id="'​.$actual['​id'​].'"​ value="'​.$actual['​sensor_name'​].'"></​td>';​
 + echo '<​td><​input type="​text"​ autocomplete="​off"​ class="​def"​ name="​note"​ id="'​.$actual['​id'​].'"​ value="'​.$actual['​note'​].'"></​td>';​
 + echo '</​tr>';​
 + }
 + }
 + else
 + {
 + echo '<​center><​h3>​Данных пока нет</​h3></​center>';​
 + }
 +?>
 +</​table>​
 +<br>
 +<button type="​button"​ name="​update_button"​ onclick="​update_value()">​Изменить</​button>​
 +<button type="​button"​ name="​defualt_value_set"​ onclick="​default_update_value()">​Сбросить</​button>​
 +<br>
 +</​form>​
 +
 +
 +</​div></​center>​
 +</​body>​
 +</​html>​
 +
 +<script type="​text/​javascript">​
 +
 +/* Загрузка списка параметров прибора и заполнение форм, если среди параметров есть адрес датчиков ​ */
 +var array_of_addr = [];
 +$('#​unitid'​).on('​change',​ function()
 +{
 + $.get("​../​../​core/​backend.php","​unit_addr_exist="​ + $('#​unitid'​).val(),​ function (back) ​
 + {
 + back = JSON.parse(back);​
 + if(back.error == '​true'​)
 + {
 + $('#​sensor_fullname'​).replaceWith('<​input type="​text"​ autocomplete="​off"​ class="​new"​ name="​sensor"​ id="​sensor_fullname"​ required>'​);​
 + }
 + else
 + {
 + var options = '<​select class="​new"​ name="​sensor"​ id="​sensor_fullname"​ required><​option value="">​ --- </​option>';​
 + $(back.data).each(function(){
 + options += '<​option value="'​ + $(this).attr('​Type'​) + '">'​ + $(this).attr('​Type'​) + '</​option>';​
 + array_of_addr[$(this).attr('​Type'​)] = $(this).attr('​Val'​);​
 + });
 + options += '</​select>';​
 + $('#​sensor_fullname'​).replaceWith(options);​
 + $('#​sensor_fullname'​).prop('​defaultValue',​ ""​).toggleClass('​entered',​true);​
 + return array_of_addr;​
 +
 + });
 +});
 +
 +$('​body'​).on('​change','#​sensor_fullname',​ function()
 +{
 + $('#​fill_adr'​).val(array_of_addr[$('#​sensor_fullname'​).val()]).toggleClass('​entered',​true);​
 +});
 +
 +/* Нажатие на кнопку */
 +function default_update_value()
 +{
 + $('#​update_form'​).find('​.changed'​).each(function()
 + {
 + this.value = $(this).prop('​defaultValue'​);​
 + });
 +}
 +
 +function update_value()
 +{
 + var data = [];
 + var id = 0;
 + var name = '';​
 + var value = 0;
 + $('#​update_form'​).find('​.changed'​).each(function()
 + {
 + id = this.id;
 + value = this.value;
 + name = this.name;
 + data[data.length] = [id,​name,​value];​
 + });
 +    if(data.lenght > 1)
 +    {
 +    $.post("​../​../​core/​backend.php",​ { update:data });
 +    alert("​Данные обновлены"​);​
 +    location.reload();​
 +    }
 +
 +}
 +
 +function insert_value()
 +{
 + var data = [];
 + var name = '';​
 + var value = 0;
 + var validate = true;
 + $('#​insert_form'​).find('​[required]'​).each(function()
 + {
 + if(this.value === ''​)
 + {
 + $(this).toggleClass('​notvalid',​true);​
 + validate = false;
 + }
 + else
 + {
 + $(this).toggleClass('​notvalid',​false);​
 + }
 + });
 +
 + if(validate)
 + {
 + $('#​text'​).empty();​
 + $('#​insert_form'​).find('​.entered'​).each(function()
 + {
 + value = this.value;
 + name = this.name;
 + data[data.length] = [name,​value];​
 + });
 +
 + $.post("​../​../​core/​backend.php",​ { insert:data });
 + alert("​Данные внесены"​);​
 +    location.reload();​
 + }
 + else
 + {
 + $('#​text'​).html('​Исправьте ошибки заполнения'​);​
 + }
 +
 +}
 +
 +/* изменение класса для изменённых форм */
 +
 +$('​.new'​).on('​change',​ function()
 +{
 + if($(this).prop('​defaultValue'​) == $(this).val())
 +    {
 +    $(this).toggleClass('​entered',​false);​
 +    }
 +    else
 +    {
 +    $(this).toggleClass('​entered',​true);​
 +    }
 +  ​
 +});
 +
 +$('​.def'​).on('​change',​ function()
 +{
 +    if($(this).prop('​defaultValue'​) == $(this).val())
 +    {
 +    $(this).toggleClass('​changed',​false);​
 +    }
 +    else
 +    {
 +    $(this).toggleClass('​changed',​true);​
 +    }
 +});
 +
 +$('​select[class=def]'​).each(function(index,​ele) ​
 +{
 +    var origvalue = $(this).val(),​
 +    defaultvalue = $(this).prop('​defaultValue'​);​
 +    if(!defaultvalue) {
 +        $(this).prop('​defaultValue',​ origvalue);
 +    }
 +});
 +
 +</​script>​
 +</​file></​hidden>​
 +----
 +
 +<hidden simple.php><​file php simple.php>​
 +<?
 +session_start ();
 +if (!$_SESSION['​level'​]) die ( '<​center><​a href=/​admin/​index.php>​Пройдите авторизацию</​a><​center>'​ );
 +if($_SESSION['​level'​] < 1) die ('<​center><​a href=/​admin/​index.php>​Недостаточно полномочий</​a><​center>'​);​
 +require_once '​../​../​core/​baseinfo.php';​
 +?>
 +
 +<​style>​
 +td {
 +  text-indent:​ 5px;
 +  border-collapse:​ collapse;
 +  color: #500;
 +  border-top: 0px solid transparent;​
 +  padding: 2px;
 +  text-align:​left;​
 +}
 +tr{text-indent:​ 1px;}
 +
 +input[id=newinp] ​
 +
 +    -moz-appearance:​ textfield;
 +    width: 4em;
 +}
 +input[id=newinp]::​-webkit-inner-spin-button ​
 +
 +  display: none;
 +}
 +
 +</​style>​
 +
 +<​!DOCTYPE html>
 +<​html>​
 +<​head>​
 +    <meta charset="​utf-8">​
 +    <​title>​Внесение замера</​title>​
 +    <script src="​http://​code.jquery.com/​jquery-latest.js"></​script>​
 +    <style type="​text/​css">​
 +    .bl { display: none;}
 +    .linf {
 +    border: 1px solid #333; /* Рамка */
 +    display: inline-block;​
 +    padding: 5px 15px; /* Поля */
 +    text-decoration:​ none; /* Убираем подчёркивание */
 +    color: #000; /* Цвет текста */
 +    }
 +   ​.linf:​hover {
 +    box-shadow: 0 0 5px rgba(0,​0,​0,​0.3);​ /* Тень */
 +    background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */
 +    color: #a00;
 +    }
 +    input[type=number] ​
 +    { 
 +    -moz-appearance:​ textfield;
 +    width: 4em;
 +    }
 +    input[type=number]::​-webkit-inner-spin-button ​
 +    { 
 +    display: none;
 +    }
 +    input:valid {
 +        border-color:​ green;
 +    }
 +
 +    input:​invalid {
 +        border-color:​ red;
 +    }
 +    select:​valid {
 +        border-color:​ green;
 +    }
 +
 +    select:​invalid {
 +        border-color:​ red;
 +    }
 +    </​style>​
 +</​head>​
 +<​body>​
 +
 +
 +<​center><​div style="​width:​ 600px; text-align: left;">​
 +
 +<div id="​unitdiv">​
 +Выберите устройство:​ <br>
 +<select id="​unitid"​ name="​uid"​ required onchange="​getparams();">​
 +<option value="">​---</​option>​
 +<?
 +$result = $mysqli->​query("​SELECT `uNum`,​`uName`,​`Serial` FROM `units_list`"​);​
 +while($row = mysqli_fetch_array($result,​MYSQLI_ASSOC))
 +{
 +    echo "<​option value="​.$row['​uNum'​].">"​.$row['​uName'​]."​("​.$row['​Serial'​]."​) </​option>";​
 +}
 +?>
 +</​select>​
 +</​div>​
 +<form id="​ratform">​
 +
 +<div id="​objdiv"​ hidden="​true">​
 +<p>
 +    <​tr><​td>​object</​td>​
 +<td>
 +    <select name="​object"​ required="​true">​
 +    <option value="">​---</​option>​
 +    <?
 +    $result = $mysqli->​query("​SELECT `NumOb`,​`NameOb` FROM `objects`"​);​
 +    while($row = mysqli_fetch_array($result,​MYSQLI_ASSOC))
 +    {
 +        echo "<​option value="​.$row['​NumOb'​].">"​.$row['​NameOb'​]."</​option>";​
 +    }
 +    ?>
 +    </​select>​
 +</td>
 +</tr>
 +</p>
 +</​div>​
 +<div id="​textpart"​ hidden="​true"></​div>​
 +
 +</​form>​
 +<button type="​sumbit"​ hidden="​true" ​ id="​suc">​ Готово </​button>​
 +<button type="​button"​ hidden="​true" ​ id="​res"​ onclick="​reset();">​ Сбросить </​button>​
 +<div id="​baddiv"></​div>​
 +
 +
 +</​div></​center>​
 +</​body>​
 +</​html>​
 +
 +<script type="​text/​javascript">​
 +/* сброс формы */ 
 +function reset()
 +{
 +    $('#​unitid'​).attr('​disabled',​ false);
 +    $('#​baddiv'​).empty();​
 +    $('#​textpart'​).empty();​
 +    $('​select[name="​object"​]'​).val(""​);​
 +    $('#​unitid'​).val(""​);​
 +    document.getElementById('​suc'​).hidden = true;
 +    document.getElementById('​res'​).hidden = true;
 +    document.getElementById('​textpart'​).hidden = true;
 +    document.getElementById('​objdiv'​).hidden = true;
 +}
 +/* форма стандартного набора данных */
 +function defpar()
 +{
 +    $('#​baddiv'​).empty();​
 +    $('#​textpart'​).empty();​
 +    $('​select[name="​object"​]'​).val(""​);​
 +    var altoptions = '<​tr><​td>​x</​td><​td><​input type="​number"​ step="​0.0001"​ autocomplete="​off"​ name="​x"​ required value="​0"></​td></​tr>';​
 +    altoptions += '<​tr><​td>​y</​td><​td><​input type="​number"​ step="​0.0001"​ autocomplete="​off"​ required name="​y"​ value="​0"></​td></​tr>';​
 +    altoptions += '<​tr><​td>​temp</​td><​td><​input type="​number"​ step="​0.0001"​ autocomplete="​off"​ required name="​temp"></​td></​tr>';​
 +    altoptions += '<​tr><​td>​humidity</​td><​td><​input type="​number"​ step="​0.0001"​ autocomplete="​off"​ required name="​humidity"></​td></​tr>';​
 +    altoptions += '<​tr><​td>​pressure</​td><​td><​input type="​number"​ step="​0.0001"​ autocomplete="​off"​ required name="​pressure"></​td></​tr>';​
 +    altoptions += '<​tr><​td>​date</​td><​td><​input type="​date" ​ min="​2019-01-24"​ required autocomplete="​off"​ name="​date"></​td></​tr>';​
 +    altoptions += '<​tr><​td>​time</​td><​td><​input type="​time"​ autocomplete="​off"​ required name="​time"></​td></​tr>';​
 +    $('#​textpart'​).html(altoptions);​
 +    document.getElementById('​suc'​).hidden = false;
 +    document.getElementById('​res'​).hidden = false;
 +    document.getElementById('​textpart'​).hidden = false;
 +    document.getElementById('​objdiv'​).hidden = false;
 +
 +}
 +/* создание форм параметров устройства */
 +function getparams()
 +{
 +    var forma = document.getElementById('​unitid'​).value;​
 +    if(forma != ''​)
 +    {
 +        $('#​unitid'​).attr('​disabled',​ true);
 +        var url = '​../​../​core/​backend.php';​
 +        $.get(url,"​unitnow="​ + forma,​function (result) {
 +                    if(result.back == '​error'​)
 +                    {
 +                        $('#​baddiv'​).html('<​p><​h1>​ Нет данных </​h1></​p><​p>​ Внести стандартный набор параметров?​ </​p><​p>​ <button id="​yesdef"​ type="​button"​ onclick="​defpar();">​Да</​button>​ <button id="​nodef"​ type="​button"​ onclick="​reset();">​Нет</​button></​p>'​);​
 +                    }
 +                    else
 +                    {
 +                        var options = '<​tr><​td>​x</​td><​td><​input type="​number"​ step="​0.0001"​ autocomplete="​off"​ name="​x"​ value="​0"></​td></​tr>';​
 +                        options += '<​tr><​td>​y</​td><​td><​input type="​number"​ step="​0.0001"​ autocomplete="​off"​ name="​y"​ value="​0"></​td></​tr>';​
 +                        $(result.sens).each(function() ​
 +                        {
 +                            if($(this).attr('​title'​) == '​date'​ || $(this).attr('​title'​) == '​RTC_date'​)
 +                            {
 +                                options += '<​tr><​td>'​ + $(this).attr('​title'​) + '</​td><​td><​input type="​date"​ min="​2019-01-24"​ autocomplete="​off"​ required name="'​ + $(this).attr('​title'​) + '"></​td></​tr>'; ​
 +                            }
 +                            else if($(this).attr('​title'​) == '​time'​ || $(this).attr('​title'​) == '​RTC_time'​)
 +                            {
 +                                options += '<​tr><​td>'​ + $(this).attr('​title'​) + '</​td><​td><​input type="​time"​ autocomplete="​off"​ required name="'​ + $(this).attr('​title'​) + '"></​td></​tr>';​
 +                            }
 +                            else
 +                            {
 +                                options += '<​tr><​td>'​ + $(this).attr('​title'​) + '</​td><​td><​input type="​number"​ step="​0.0001"​ autocomplete="​off"​ required name="'​ + $(this).attr('​title'​) + '"></​td></​tr>'; ​
 +                            }
 +                        });
 +                        $('#​textpart'​).html(options);​
 +                        document.getElementById('​suc'​).hidden = false;
 +                        document.getElementById('​res'​).hidden = false;
 +                        document.getElementById('​textpart'​).hidden = false;
 +                        document.getElementById('​objdiv'​).hidden = false;
 +                    }
 +            },"​json"​
 +        );
 +    }
 +    else
 +    {
 +        $('#​textpart'​).empty();​
 +    }
 +}
 +/* проверка верности заполнения форм и формирование JSON с передачей скрипту внесения данных */
 +$('#​suc'​).on('​click',​ function (form) ​
 +{
 +    form.preventDefault();​
 +    var form_box = document.getElementById('​ratform'​);​
 +    var unit = document.getElementById('​unitid'​);​
 +    $('#​unitid'​).attr('​disabled',​ false);
 +    var arr = $(this).prev('​form'​).serializeArray();​
 +    $('#​unitid'​).attr('​disabled',​ true);
 +    var new_obj = {};
 +    $.each(arr, function(i, obj) 
 +    {
 +        if(obj.value != ''​)
 +        {
 +            new_obj[obj.name] = obj.value;
 +        }
 +    });
 +    if(form_box.checkValidity() && unit.checkValidity())
 +    {
 +        $.ajax({
 +        url:"​../​../​core/​jsonadd.php",​
 +        dataType: '​json',​
 +        type: '​POST',​
 +        data: {fromtable: '​[{"​AKey":"'​+unit.value+'"​}]['​ + JSON.stringify(new_obj) + '​]'​ } , 
 +        async: true});
 +        reset();
 +    }
 +    else
 +    {
 +        alert('​Пожалуйста,​ заполните все поля корректно.'​);​
 +    }
 +});
 +
 +</​script>​
 +
 +
 +</​file></​hidden>​
 +</​hidden>​
 +
 +====== Архив, содержащий программный код и структуру каталогов веб-приложения. ======
 +
 +{{ :​doc:​1513:​server.rar |}}
  
  
doc/1513/643.mgul.15131-01_12_01.1561000269.txt.gz · Последние изменения: 2019/06/20 06:11 — deimozzz