Пояснительная записка к электронному журналу с использованием технологии Блокчейн, практическая часть: часть 5
Продолжаем.
2.2.3 PHP, часть 3
Теперь функция dataTable: выводит таблицы с данными в зависимости от значения
GET запроса page.
Передаются ей значения page, роль пользователя ($role) и его логин
($user).
function dataTable($page = '', $role = 0, $user = '') {
require_once 'db.php';
$db = dbConnect();
$table = ''; // Создаётся переменная строки с таблицей.
switch ($page) // Условие с проверкой значения $page.
{
case 'lactors': // Если lactors (преподаватели)
$res = $db->query('select * from \lactors'); // Получение данных из
таблицы учителей.
$table = '<table border="1" style="border:1px solid #000;">'; //
Начало таблицы
foreach ($res as $key 😕> $value) // Перебор элементов таблицы.
{
$delete_button = ($role) ? '<td style="border:1px solid #000;"><a
href="/index.php?page=lactors&action=droplactor&lactor=' .
$value["login"] . '">Удалить</a></td>' : false; // Переменная, в
которую добавляется ссылка удаления, если пользователь имеет право на
это действие.
$table .= '<tr><td style="border:1px solid #000;">' .
$value['login'] . '</td>' . $delete_button . '</tr>'; // Вся
остальная строка таблицы: логин преподавателя.
}
$table .= '</table>'; // Завершение таблицы.
break;
case 'disciples': // Если учеников страница
$res = $db->query('select * from \disciples'); // Выбор данных.
$table = '<table border="1" style="border:1px solid #000;">';
foreach ($res as $key 😕> $value)
{
$delete_button = ($role) ? '<td style="border:1px solid #000;"><a
href="/index.php?page=disciples&action=dropdisciple&disciple=' .
$value["login"] . '">Удалить</a></td>' : false; // Также ссылка
удаления.
$table .= '<tr><td style="border:1px solid #000;">' .
$value['login'] . '</td>' . $delete_button . '</tr>'; // Также
строка таблицы с логином и переменной удаления.
}
$table .= '</table>';
break;
case 'lessons': // Предметы
$res = $db->query('select * from \lessons'); // Получение данных из
таблицы в БД.
$delete_button = ($role) ? '<td style="border:1px solid #000;"><a
href="#">Удалить</a></td>' : false;
$table = '<table border="1" style="border:1px solid #000;">';
foreach ($res as $key 😕> $value)
{
$delete_button = ($role) ? '<td style="border:1px solid #000;"><a
onClick="return confirm(\'Удалить урок и все его разделы?\')"
href="/index.php?page=lessons&action=droplesson&lesson=' .
$value["name"] . '">Удалить</a></td>' : false;
$table .= '<tr><td style="border:1px solid #000;">' .
$value['name'] . '</td><td style="border:1px solid #000;">' .
$value['lactors'] . '</td>' . $delete_button . '</tr>'; // Строка
таблицы: название, список преподавателей (2 столбца), а также, если
пользователь имеет доступ, ссылка удалить.
}
$table .= '</table>';
break;
case 'assessments': // Оценки
$res = $db->query('select * from \assessments');
$table = '<table border="1" style="border:1px solid #000;">';
foreach ($res as $key 😕> $value)
{
$table .= '<tr><td style="border:1px solid #000;">' .
$value['date'] . '</td><td style="border:1px solid #000;">' .
$value['lesson'] . '</td><td style="border:1px solid #000;">' .
$value['disciple'] . '</td><td style="border:1px solid #000;">' .
$value['assessment'] . '</td></tr>'; // Строка с датой, предметом,
учеником и оценкой.
}
$table .= '</table>';
break;
case 'lesson_topics': // темы предметов.
$res = $db->query('select * from \lesson_topics');
$table = '<table border="1" style="border:1px solid #000;">';
foreach ($res as $key 😕> $value)
{
$table .= '<tr><td style="border:1px solid #000;">' .
$value['date'] . '</td><td style="border:1px solid #000;">' .
$value['lesson'] . '</td><td style="border:1px solid #000;">' .
$value['topics'] . '</td></tr>'; // Дата, предмет и тема.
}
$table .= '</table>';
break;
default:
}
return $table; // Возвращает строку с таблицей.
}
функция checkRole: выясняет роль пользователя.
function checkRole($login = false, $role = 0) {
// 0 – учен
ик
// 1 – преподаватель
$json_conf = file_get_contents( '../config.json' ); // Подключение
данных JSON файла конфига.
$config = json_decode($json_conf, JSON_OBJECT_AS_ARRAY); //
Преобразование в массив.
require_once 'db.php';
$db = dbConnect();
$sql = 'select * from \lactors\ where \login\ = "' . $login . '"';
// SQL запрос к таблице преподавателей с поиском текущего логина.
$res = $db→query($sql); // // Получение результата.
if (isset($res->rowCount) || trim($login) == $config["metodist"])
$role = 1; // Если найден логин в таблице преподавателей или логин есть
в конфиге в опции metodist, $role равен 1.
return $role; // Возвращает номер роли.
}
6. index.php
Только отличия.
1. Подключение файла functions с передачей в переменную возвращаемого
значения функции homePage:
<?php require 'functions.php';
$page = homePage();
?>
В тайтле и h1 не $pagename, а $page:
<title><?= $page; ?> | Электронный журнал с использованием
технологии Блокчейн</title>
Контентный блок main с классом content пустой, т. к. в него приходят
данные по ajax:
<main class="content">
</main><!-- .content -->
4. js код в этом файле отличается. Добавляется функция отправки ajax в
первых двух условиях (Когда есть данные в localStorage или в
sessionStorage):
ajaxSend(viz_login); // Вызываем функцию отправки Ajax и передаём
ей логин.
Всё
Благодарю за внимание. С вами был незрячий автор, программист и делегат @denis-skripnik. До встречи в новых постах.