Продолжаем тему «Персональной карточки» Орион Про своими руками.
В этой статье мы рассмотрим один из способов вывода информации по проходу сотрудника в браузер. В прошлом мы рассмотрели основные принципы и выполнили необходимые действия по подготовке базы данных Орион Про для решения нашей задачи. Теперь займемся серверной частью.
Нам потребуется сервер Apache (можно и любой другой), а так же установленный PHP, в котором обязательно должен присутствовать модуль SQLSRV.
Для вывода мы будеи использовать 2 файла.
1й — pcard01.php, в нем мы осуществляем подключение к БД, формируем запрос для получения нужных нам данных по GUID, записанному в созданной нами ранее таблице pCard01, выполняем его и подготавливаем полученные данные для вывода.
2й — pcard-01.html, к нему мы обращаемся в браузере для вывода информации. Файл осуществляет асинхронный запрос к pcard01.php для получения данных через библиотеку jquery, не забудьте ее скачать и закинуть на сервер.
Содержимое pcard01.php:
<?php //Соединяемся с БД $serverName = "<адрес сервера>\SQLSERVER2012"; $connectionInfo = array( "Database"=>"demobase1_20_3_4", "UID"=>"<логин сервера>", "PWD"=>"<пароль>", "CharacterSet" => "UTF-8" ); $conn = sqlsrv_connect( $serverName, $connectionInfo); if($conn === false) die( print_r( sqlsrv_errors(), true)); //Устанавливаем кодировку UTF-8 sqlsrv_query("SET NAMES utf8"); sqlsrv_query("set character_set_client='utf8'"); sqlsrv_query("set character_set_results='windows'"); sqlsrv_query("set collation_connection='utf8_general_ci'"); //Формируем запрос $sql = "Select pLogdata.TimeVal, --Время Events.Contents, --Событие pLogData.Remark, --Описание точки доступа pList.Name, --Фамилия pList.FirstName, --Имя pList.MidName, --Отчество pList.Picture, --Фото pPost.Name AS Post, pDivision.Name AS Division FROM pLogdata LEFT JOIN Events on Events.Event = pLogData.event LEFT JOIN pList on pLogData.HozOrgan = pList.ID LEFT JOIN pPost on PPost.id = pList.Post LEFT JOIN pDivision on PDivision.id = pList.Section LEFT JOIN pCard01 ON pCard01.GUID = pLogData.GUID WHERE pCard01.GUID = pLogData.GUID "; $result = sqlsrv_query($conn, $sql); if($result === false) die(print_r(sqlsrv_errors(), true)); //Оформляем вывод в таблицу $table = "<table width=70% style=font-size:15pt; font-color:white border=1 align=CENTER >\n"; //Конвертируем фотографию //Создание тега <img> и передача двоичных данных while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) { //Проверка на пустую картинку if ($row['Picture'] == NULL) $imageSrc = '0.jpg'; // Надо в переменную что-то положить, если в базе пусто else $imageSrc = 'data:image/jpeg;base64,' . base64_encode($row['Picture']); $table .= "<tr align=top width=70%>\n"; $table .= "<td rowspan=10 valign=top width=10% bgcolor=lightyellow>".'<img valign=top src="'.$imageSrc.'" width="400" height="500">'."</td>\n"; $table .= "<td valign=top height=30% bgcolor=MidnightBlue><b><font color=white>Дата:</b> ".$row['TimeVal']->format('Y-m-d H:i:s')."</td></tr>\n"; $table .= "<td valign=top width=30% bgcolor=MidnightBlue><b><font color=white>Событие:</b> ".$row['Contents']."</td></tr>\n"; $table .= "<tr><td valign=top width=30% bgcolor=MidnightBlue><b><font color=white>Точка прохода:</b>: ".$row['Remark']."</td></tr>\n"; $table .= "<tr><td valign=top width=30% bgcolor=MidnightBlue style=font-size:25pt><b><font color=white>Фамилия:</b><br> ".$row['Name']."</td></tr>\n"; $table .= "<tr><td valign=top width=30% bgcolor=MidnightBlue style=font-size:25pt><b><font color=white>Имя:</b><br> ".$row['FirstName']."</td></tr>\n"; $table .= "<tr><td valign=top width=30% bgcolor=MidnightBlue style=font-size:25pt><b><font color=white>Отчество:</b><br> ".$row['MidName']."</td>\n"; $table .= "<tr><td valign=top width=30% bgcolor=MidnightBlue style=font-size:15pt><b><font color=white>".$row['Division']."</td>\n"; $table .= "<tr><td valign=top width=30% bgcolor=MidnightBlue style=font-size:15pt><b><font color=white>".$row['Post']."</td>\n"; } $table .= "</table>\n"; // Выводим заполненую таблицу на экран echo $table; ?>
Содержимое pcard-01.html:
<html> <head> <title>Персональная карточка</title> <link rel="icon" href="icon.png" type="image/x-icon"> <meta http-equiv="Content-Type" content="text/html; Charset=UTF-8"> <script type="text/javascript" src="jquery-3.7.1.min.js"></script> </head> <body> <H2>Персональная карточка Пост № 1</H2> <div id="content"></div> <script> function show() { $.ajax( { url: "pcard01.php", cache: false, success: function(html) { $("#content").html(html); } }); } $(document).ready(function() { show(); setInterval('show()',1000); }); </script> </body> </html>
Ну и собственно сам результат:
Все вопросы, как и всегда, вы можете задать в группе в телеге.